2011-07-25 53 views
14

所以,我已经有了一个可笑的插件/包的Python程序。我希望能够在其virtualenv中分发该程序,以便将软件包捆绑在一起。但是,该程序适用于Windows,并且在Windows上不支持virtualenvs的“可重定位”功能(以及仍处于试验阶段)。virtualenv的哪些部分需要更改以重新定位它?

所以,我正在寻找写脚本,或者只是写指令来手动更改绝对路径名称来重新定位virtualenv。

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

Making Environments Relocatable部分描述了为什么virtualenv不能简单地移动,但没有列出包含绝对路径名的地方。

+0

“Making Environments Relocatable”中的当前文档(正确地)说:_“警告:'--relocatable'选项目前有很多问题,并不能保证在任何情况下都能正常工作。这个选项可能会在未来版本的virtualenv中被弃用。“_重新创建一个python环境(例如,通过pip freeze/install要求)可能总是会比尝试创建一个便携/可重定位的更有优势 – michael

回答

15

与其试图手动执行此操作,您最好使用freeze选项至pip来创建需求文件。你现在可以用一个命令重建你的整个虚拟环境。

旧的virtualenv:

pip freeze > stable-req.txt 

在新的一个:

pip install -r stable-req.txt 
+0

这项工作,如果我没有安装所有的程序与点子?几个插件(numpy,wxPython,PIL)不能使用PIP安装,我的搜索似乎表明,他们不能安装easy_install或PIP ,虽然我可能是错的 – jmite

+0

看起来它可以适用于其中的大部分,但它没有检测到wx,它必须使用它的windows安装程序安装在env中,而不是通过pip或easy_install安装,但冻结看起来像一个伟大的工具,谢谢! – jmite

+0

大多数那些过去对于Windows(numpy,PIL等)麻烦的软件包现在都有.whl文件可用。使用最新版本的pip,'pip install'应该能够找到.whl文件为t软管包装,因此与任何其他包装一样容易地执行安装。 –

7

为您的虚拟环境目录{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)" 
# virtual env is at ./env 
ENV_DIR=`dirname $BIN_DIR` 
VIRTUAL_ENV=$ENV_DIR 
export VIRTUAL_ENV 
2

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

它更新:

  • 的virtualenv中激活脚本
  • 家当线在脚本中的virtualenv bin/目录存储在pyc文件
  • 绝对路径
  • 符号链接在任何local/目录
相关问题