2016-03-28 9 views
1

projectlibディレクトリを、私のvirtualenvディレクトリに追加する必要があります。アシスタント:virtualenvにいくつかのプロジェクト固有のパスを追加する

$ add2virtualenv project 
$ add2virtualenv lib 

が、私は、サーバー上virtualenvwrapperをインストールするwan'tはありません:私はこれを行うことができ、開発マシン上で

- pip: 
    name: virtualenv 

- pip: 
    requirements: "{{project_dir}}requirements/development.txt" 
    virtualenv: "{{ virtualenv_path }}" 
    state: latest 

: は、私はこのような依存関係をインストールしています。 この場合、virtualenvを適切に設定するための慣習的な方法は何ですか?

答えて

0

あなたはdoing thisことを代わりにadd2virtualenv次のシェルスクリプトを使用することができます。

が 現在アクティブなvirtualenvのためのPythonパスに指定されたディレクトリを追加します。

構文:

add2virtualenvにdirectory1 directory2 ...

時には にシステムsite-packagesディレクトリではなく、各virtualenvの中 を設置すべきではないインストールされたパッケージを共有することが望ましいです。考えられる解決策の1つは、ソース を環境site-packagesディレクトリにシンボリックリンクすることですが、 は、add2virtualenvを使用してsite-packages内の.pth ファイルにそれらを含めることによって、PYTHONPATHに余分なディレクトリを追加することも簡単です。

Check out the source for a big project, such as Django. 
Run: add2virtualenv path_to_source. 
Run: add2virtualenv. 
A usage message and list of current “extra” paths is printed. 

ディレクトリ名は _virtualenv_path_extensions.pth環境のためのsite-packagesディレクトリ内の指定されたパスのファイルに追加されます。

シェルスクリプト:

# Path management for packages outside of the virtual env. 
# Based on a contribution from James Bennett and Jannis Leidel. 
# 
# add2virtualenv directory1 directory2 ... 
# 
# Adds the specified directories to the Python path for the 
# currently-active virtualenv. This will be done by placing the 
# directory names in a path file named 
# "virtualenv_path_extensions.pth" inside the virtualenv's 
# site-packages directory; if this file does not exist, it will be 
# created first. 
# 
#:help:add2virtualenv: add directory to the import path 
function add2virtualenv { 
    virtualenvwrapper_verify_workon_home || return 1 
    virtualenvwrapper_verify_active_environment || return 1 

    site_packages="`virtualenvwrapper_get_site_packages_dir`" 

    if [ ! -d "${site_packages}" ] 
    then 
     echo "ERROR: currently-active virtualenv does not appear to have a site-packages directory" >&2 
     return 1 
    fi 

    # Prefix with _ to ensure we are loaded as early as possible, 
    # and at least before easy_install.pth. 
    path_file="$site_packages/_virtualenv_path_extensions.pth" 

    if [ "$*" = "" ] 
    then 
     echo "Usage: add2virtualenv dir [dir ...]" 
     if [ -f "$path_file" ] 
     then 
      echo 
      echo "Existing paths:" 
      cat "$path_file" | grep -v "^import" 
     fi 
     return 1 
    fi 

    remove=0 
    if [ "$1" = "-d" ] 
    then 
     remove=1 
     shift 
    fi 

    if [ ! -f "$path_file" ] 
    then 
     echo "import sys; sys.__plen = len(sys.path)" > "$path_file" || return 1 
     echo "import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)" >> "$path_file" || return 1 
    fi 

    for pydir in "[email protected]" 
    do 
     absolute_path="$(virtualenvwrapper_absolutepath "$pydir")" 
     if [ "$absolute_path" != "$pydir" ] 
     then 
      echo "Warning: Converting \"$pydir\" to \"$absolute_path\"" 1>&2 
     fi 

     if [ $remove -eq 1 ] 
     then 
      sed -i.tmp "\:^$absolute_path$: d" "$path_file" 
     else 
      sed -i.tmp '1 a\ 
'"$absolute_path"' 
' "$path_file" 
     fi 
     rm -f "${path_file}.tmp" 
    done 
    return 0 
} 
関連する問題