Python virtualenv的哪些部分需要更改以重新定位?
所以,我有一个Python程序,它有大量的插件/包。我希望能够在它的virtualenv中发布这个程序,这样软件包就可以捆绑在一起了。但是,该程序是针对Windows的,并且在Windows上不支持virtualenvs的“可重新定位”功能(并且仍处于试验阶段) 因此,我正在考虑编写一个脚本,或者只是编写指令来手动更改绝对路径名以重新定位virtualenv 我的问题是,如果有人知道我要在virtualenv中查找绝对路径名的位置。我对Python打包相当陌生。activate.bat脚本包含绝对路径名,但单个软件包的安装中是否有硬编码的绝对路径名Python virtualenv的哪些部分需要更改以重新定位?,python,windows,oop,virtualenv,distutils,Python,Windows,Oop,Virtualenv,Distutils,所以,我有一个Python程序,它有大量的插件/包。我希望能够在它的virtualenv中发布这个程序,这样软件包就可以捆绑在一起了。但是,该程序是针对Windows的,并且在Windows上不支持virtualenvs的“可重新定位”功能(并且仍处于试验阶段) 因此,我正在考虑编写一个脚本,或者只是编写指令来手动更改绝对路径名以重新定位virtualenv 我的问题是,如果有人知道我要在virtualenv中查找绝对路径名的位置。我对Python打包相当陌生。activate.bat脚本包含绝
本节介绍了为什么不能简单地移动virtualenv,但没有列出包含绝对路径名的位置。与其尝试手动执行此操作,不如使用选项
pip
创建需求文件。现在,只需一个命令即可重建整个virtualenv
关于旧virtualenv:
pip freeze > stable-req.txt
关于新的:
pip install -r stable-req.txt
对于虚拟环境目录
{ENV}
,请执行以下步骤
$virtualenv--可重新定位的{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
#环境/垃圾箱/激活
BIN_DIR=“$(cd“$(dirname“${BASH_SOURCE[0]}”)”&&pwd)”
#虚拟环境位于./env
ENV_DIR=`dirname$BIN_DIR`
虚拟环境=$ENV\u目录
导出虚拟环境
是一个脚本,用于在移动现有virtualenv后更新其位置。虽然它在Windows上没有帮助,但它可能对其他人有用
更新内容:
- virtualenv激活脚本
- 在virtualenv
目录中的脚本中显示行bin/
- 存储在.pyc文件中的绝对路径
- 任何
目录中的符号链接local/
pip安装
应该能够找到这些软件包的.whl文件,从而像任何其他软件包一样轻松地执行安装。当前“使环境可重新定位”的文档(正确地)说:“警告:--relocatable
选项目前存在许多问题,不能保证在所有情况下都能正常工作。在未来的virtualenv版本中,该选项可能会被弃用。“重新创建python环境(例如,通过pip冻结/安装要求)可能总是比尝试创建一个可移植/可重新定位的环境更可取。