虚拟环境的哪些部分需要改变来重新定位呢?

所以,我已经有了一个可笑的一些插件/包的Python程序。 我希望能够在其virtualenv分发该程序,以便捆绑包。 但是,该程序是针对Windows的,而virtualenvs的“可重定位”function在Windows上是不受支持的(并且仍然是实验性的)。

所以,我正在考虑编写一个脚本,或者只是编写指令手动更改绝对path名称来重新定位virtualenv。

我的问题是,如果有人知道我必须在virtualenv中查找绝对path名。 我很新的Python包装。 activate.bat脚本包含绝对path名称,但是单个软件包的绝对path名是否被硬编码到其安装中?

“ 使环境可重定位 ”一节介绍了为什么不能简单地移动virtualenv,但不列出包含绝对path名的地方。

而不是尝试手动执行此操作,则最好使用freeze选项来创建需求文件。 你现在可以用一个命令重建你的整个虚拟环境。

在旧的virtualenv:

 pip freeze > stable-req.txt 

在新的一个:

 pip install -r stable-req.txt 

对于您的虚拟环境目录{ENV}按照下列步骤操作

  1. 运行$ virtualenv --relocatable {ENV}
  2. 编辑{ENV}/bin/activate ,使用您选择的vim或编辑器
  3. 编辑VIRTUAL_ENV (在第42行左右)以匹配新的目录位置

所以如果你正在编写一个脚本,你可以导出VIRTUAL_ENV shell变量或者动态地执行/ bin / activate上的编辑。

这是我设置我的。

 #env / bin / activate
 BIN_DIR =“$(cd”$(dirname“$ {BASH_SOURCE [0]}”)“&& pwd)”
 #虚拟env在./env
 ENV_DIR =`dirname $ BIN_DIR`
 VIRTUAL_ENV = $ ENV_DIR
导出VIRTUAL_ENV

virtualenv-tools是一个脚本,用于在移动之后更新现有的virtualenv的位置。 虽然它在Windows上没有帮助,但对其他人可能是有用的。

它更新:

  • virtualenv激活脚本
  • shebang在virtualenv bin/目录下的脚本行
  • 存储在.pyc文件中的绝对路径
  • 任何local/目录中的符号链接