将virtualenvs移动到另一个主机文件夹

时间:2014-08-18 13:12:41

标签: python virtualenv virtualenvwrapper

错误地,我忘记在创建虚拟环境之前指定WORKON_HOME变量,并且它们是在/root/.virtualenvs目录中创建的。它们运行良好,我通过激活某些环境进行了一些测试,然后执行(env)$ pip freeze以查看那里安装了哪些特定模块。

因此,当我发现workon home path错误时,我需要将主机目录更改为/usr/local/pythonenv。我创建了它并将/root/.virtualenvs目录的所有内容移动到/usr/local/pythonenv,并更改了WORKON_HOME变量的值。现在,使用workon命令激活环境似乎工作正常(即,promt更改为(env)$),但是如果我执行(env)$ pip freeze,我会获得比以前更长的模块列表,并且不包括移动前安装在特定环境中的那些。

我想只是移动文件并为WORKON_HOME变量指定另一个目录是不够的。是否有一些配置,我应该指定主机目录的新位置,或特定环境的一些配置文件?

2 个答案:

答案 0 :(得分:3)

默认情况下,Virtualenvs不可重定位。您可以使用virtualenv --relocatable <virtualenv>将现有的virtualenv转换为可重定位的virtualenv,看看是否有效。但该选项为experimental,并不是真正推荐使用。

最可靠的方法是创造新的虚拟现实。使用旧版本中的pip freeze -l > requirements.txt获取已安装软件包的列表,创建新的virtualenv,并使用pip install -r requirements.txt在新软件包中安装软件包。

答案 1 :(得分:0)

我使用了virtualenv --relocatable功能。它似乎工作,但后来我发现安装了一个不同的python版本:

$ . VirtualEnvs/moslog/bin/activate
(moslog)$ ~/VirtualEnvs/moslog/bin/mosloganalisys.py 
python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

请记住在目标主机上重新创建相同的virtualenv树。