所以,我有一个带有荒谬数量的插件/包的Python程序。我希望能够在其virtualenv中分发程序,以便捆绑包。但是,该程序适用于Windows,并且在Windows上不支持virtualenvs的“可重定位”功能(并且仍在进行实验)。
所以,我正在寻找编写脚本,或者只是编写指令来手动更改绝对路径名以重新定位virtualenv。
我的问题是,如果有人知道我必须在virtualenv中查找绝对路径名称。我是Python包装的新手。 activate.bat脚本包含绝对路径名,但是单个包是否将绝对路径名硬编码到其安装中?
Making Environments Relocatable部分描述了为什么不能简单地移动virtualenv,而是列出包含绝对路径名的地方。
答案 0 :(得分:15)
您最好使用pip
选项pip freeze > stable-req.txt
创建需求文件,而不是尝试手动执行此操作。您现在可以使用一个命令重建整个virtualenv。
关于旧的virtualenv:
pip install -r stable-req.txt
关于新的:
{{1}}
答案 1 :(得分:6)
对于您的虚拟环境目录{ENV}
,请按以下步骤操作
$ virtualenv --relocatable {ENV}
{ENV}/bin/activate
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 :(得分:2)
virtualenv-tools是一个脚本,用于在移动后更新现有的virtualenv位置。虽然它对Windows没有帮助,但它可能对其他人有用。
它更新:
bin/
目录local/
目录中的符号链接