错误地,我忘记在创建虚拟环境之前指定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
变量指定另一个目录是不够的。是否有一些配置,我应该指定主机目录的新位置,或特定环境的一些配置文件?
答案 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树。