【问题标题】:Move the virtualenvs to another host folder将 virtualenvs 移动到另一个主机文件夹
【发布时间】:2014-08-18 13:12:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: python virtualenv virtualenvwrapper


    【解决方案1】:

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

    最可靠的方法是创建新的虚拟环境。在旧的使用pip freeze -l > requirements.txt获取已安装包的列表,创建新的virtualenv,并使用pip install -r requirements.txt在新的安装包。

    【讨论】:

    • 好吧,我只是担心如果我尝试设置新的 virtualenv,可能会因为 WORKON_HOME 更改而出错。毕竟,里面有一堆可执行文件。但现在我刚刚删除了失败的 virtualenv 文件夹,使用 mkvirtualenv env 重新创建,并重新安装了软件包。成功!我仍然不知道 WORKON-HOME 中的这些文件是做什么用的,但现在我有功能性的 virtualenvs,我很高兴。
    【解决方案2】:

    我使用了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 树。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 2021-11-29
      • 1970-01-01
      相关资源
      最近更新 更多