需要改变virtualenv的哪些部分才能重新定位?

时间:2011-07-25 17:39:53

标签: python windows oop virtualenv distutils

所以,我有一个带有荒谬数量的插件/包的Python程序。我希望能够在其virtualenv中分发程序,以便捆绑包。但是,该程序适用于Windows,并且在Windows上不支持virtualenvs的“可重定位”功能(并且仍在进行实验)。

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

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

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

3 个答案:

答案 0 :(得分:15)

您最好使用pip选项pip freeze > stable-req.txt 创建需求文件,而不是尝试手动执行此操作。您现在可以使用一个命令重建整个virtualenv。

关于旧的virtualenv:

pip install -r stable-req.txt

关于新的:

{{1}}

答案 1 :(得分:6)

对于您的虚拟环境目录{ENV},请按以下步骤操作

  1. 运行$ virtualenv --relocatable {ENV}
  2. 使用您选择的vim或编辑器编辑{ENV}/bin/activate
  3. 编辑VIRTUAL_ENV(约42行!)以匹配新目录位置
  4. 因此,如果您要编写脚本,可以导出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 :(得分:2)

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

它更新:

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