仮想環境を移動できますか? 質問する

仮想環境を移動できますか? 質問する

この質問は重複ではありません。

それは単に名前の変更仮想環境ではなく、実際に動く別のディレクトリ(場合によっては別のユーザーのディレクトリを含む)に移動します。

これは、特に virtualenvs に慣れていない人にとっては、単に仮想環境の名前を変更することと同じではありません。

virtualenv を作成し、それを別のフォルダーに移動しても、引き続き動作しますか?

$ virtualenv -p /usr/bin/python3 /home/me/Env/my-python-venv
$ source Env/my-python-venv/bin/activate
(my-python-venv) $ 

...その日遅くに、仮想環境が移動しました...

(my-python-venv) $ deactivate
$ mkdir -p /home/me/PeskyPartyPEnvs
$ mv /home/me/Env/my-python-venv /home/me/PeskyPartyPEnvs/

質問:

これは機能しますか?

$ source /home/me/PeskyPartyPEnvs/my-python-venv/bin/activate
(my-python-venv) $ /home/me/PeskyPartyPEnvs/my-python-venv/bin/pip3 install foaas

これは、これを試みることの賢明さ(もちろん、その賢明さが面白いものでない限り)についての質問ではなく、それが可能かどうかについての質問です。私が本当に知りたいのは、Python 3でそれが可能かどうか、それとも単にそうしなければならないかどうかです。我慢しろそしてそれをクローンします。

mv悲しみを感じずに、ただそういう風にできますかvirtualenv?悲しみは避けたいです。

ベストアンサー1

はい、同一プラットフォーム上で移行可能です。--relocatable既存の環境でご利用いただけます。

から--help

--relocatable -- 既存の virtualenv 環境を再配置可能にします。これによりスクリプトが修正され、すべての .pth ファイルが相対的になります。

ただし、これはactivateスクリプトを変更するものではなく、pip*およびeasy_install*スクリプトのみを変更するようです。 スクリプトではactivate$VIRTUAL_ENV環境変数 が元の としてハードコードされています/path/to/original/venv$VIRTUAL_ENV変数はアクティブな環境の を設定するためにも使用されるため、絶対パスなしでやなどPATHを呼び出すには、新しい場所に基づいて変更する必要があります。pythonpip

この問題を解決するには、スクリプト$VIRTUAL_ENV内の環境変数を変更するとactivate(たとえば、 を使用sed)、すべてが問題なく実行されるはずです。

使用例:

$ cd ~/first
$ virtualenv my-venv
$ grep 'VIRTUAL_ENV=' my-venv/bin/activate
VIRTUAL_ENV="/home/username/first/my-venv"
$ virtualenv --relocatable my-venv
Making script my-venv/bin/easy_install relative
Making script my-venv/bin/easy_install-2.7 relative
Making script my-venv/bin/pip relative
Making script my-venv/bin/pip2 relative
Making script my-venv/bin/pip2.7 relative
### Note that `activate` has not been touched
$ mkdir ~/second
$ mv my-venv ~/second
$ cd ~/second
$ grep 'VIRTUAL_ENV=' my-venv/bin/activate
VIRTUAL_ENV=/home/username/first/my-venv
### (This variable hasn't been changed, it still refers to the old, now non-existent directory!)
$ sed -i -e 's|username/first|username/second|' my-venv/bin/activate
## sed can be used to change the path.
## Note that the `-i` (in place) flag won't work on all machines. 
$ source my-venv/bin/activate 
(my-venv) $ pip install foass
...
(my-venv) $ python 
[...]
> import foass

やったー、これで、新しい仮想環境にインストールしてロードできるようになりました。

おすすめ記事