web-dev-qa-db-ja.com

モジュールをあるvirtualenvから別のvirtualenvにコピーする方法

pythonモジュールを1つのvirtualenvから別のvirtualenvにコピーすることは可能ですか?もしそうなら、これはどのように行われますか?

31
bosco-

sameマシンでそれらをあるvirtualenvから別のvirtualenvに移動している限り、簡単に行うことができます:

$ cp -r [env1]/lib/pythonX.X/site-packages/* [env2]/lib/pythonX.X/site-packages/

ただし、環境が異なるマシン上にある場合、またはpythonまたは他の大きな違いのバージョン)を使用している場合は、おそらく良い考えではありません。一般に、requirements.txtを生成する方がはるかに安全です。 、次にそれを使用して他の環境で同じモジュールをすべてロードします。必要に応じてファイルを手動で作成できますが、pipを使用する方が簡単です。

$ pip freeze -E [env1] > requirements.txt

または、virtualenvがすでにアクティブ化されている場合は、次のように簡単に実行できます。

$ pip freeze > requirements.txt

次に、他の環境では、次のことができます。

$ pip install -E [env2] -r /path/to/requirements.txt
40
Chris Pratt

Ubuntu-14.04-64を搭載した64ビットマシンで作業しています。私はpython-3.4.3をコンパイルして/ opt/python3.4 /にインストールし、このpythonに基づいてvitualenvを作成しました。

mkvirtualenv -p /opt/python3.4/bin/python venv1

また、簡単に:

Sudo apt-get install virtualenvwrapper

Venvがインストールされ、PyQt5(ハードビット)に加えて、numpy、scipy、ipythonなどが正常に動作している状態で、virtualenv-cloneをインストールしました。

workon myvenv
pip install virtual-clone
deactivate

そして実行しました:

virtualenv-clone venv1 venv2

PyQt5はこのように動作します。コマンドラインプロンプトではvenv1がアクティブとして指定されていますが、〜/ .virtualenv/venv2内にあります

cat activate* | grep "venv1"

3つのファイル内の3つのエントリを示しますactivateactivate.csh、およびactivate.fish

アクティブ化、変更

if [ "x(myvenv1) " != x ] ; then
        PS1="(myvenv1) $PS1"
else

...
        PS1="(myvenv2) $PS1"
...

activate.cshの変更

if ("venv1" != "") then
        set env_name = "venv1"
else

...
    set env_name = "venv2"
...

activate.fishの変更

if test -n "(venv1) "
        printf "%s%s%s" "(venv1) " (set_color normal) (_old_fish_Prompt)
        return
end

...
    printf "%s%s%s" "(venv2) " (set_color normal) (_old_fish_Prompt)
...

今あなたがsource ~/.virtualenv/venv2/bin/activateまたはworkon venv2コマンドプロンプトは、環境(venv1の複製されたコピー)を正しく表示します。

編集:これは質問に答えません"モジュールを1つのvirtualenvから別のvirtualenvにコピーする方法"しかし、多くの場合、結果は望ましいもの、つまり新しいvenvの作成であると確信しています以前にインストールされたモジュール(すべて)を含む以前に作成されたモジュールに基づいています。

2
Chris Hanning

1つのvirtualenvを別のvirtualenvとして単にコピーすることはできないようです。 $ VIRTUAL_ENVをアクティブ化ファイルで変更しても、Origin virtualenvと同様に機能し、pipはすべてのパッケージをOrigin site-packages /にインストールします

1
xing yang

通常、.env-infoをvirtualenvのlib/site-packagesフォルダーから他の環境のlib/site-packagesにコピーできます。

1
keni