Python virtualenv的哪些部分需要更改以重新定位?

Python virtualenv的哪些部分需要更改以重新定位?,python,windows,oop,virtualenv,distutils,Python,Windows,Oop,Virtualenv,Distutils,所以,我有一个Python程序,它有大量的插件/包。我希望能够在它的virtualenv中发布这个程序,这样软件包就可以捆绑在一起了。但是,该程序是针对Windows的,并且在Windows上不支持virtualenvs的“可重新定位”功能(并且仍处于试验阶段) 因此,我正在考虑编写一个脚本,或者只是编写指令来手动更改绝对路径名以重新定位virtualenv 我的问题是,如果有人知道我要在virtualenv中查找绝对路径名的位置。我对Python打包相当陌生。activate.bat脚本包含绝

所以,我有一个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}
  • 使用vim或您选择的编辑器编辑
    {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安装所有程序,这是否有效?有几个插件(numpy、wxPython、PIL)无法使用PIP安装,我的搜索似乎表明它们无法使用easy_install或PIP安装,尽管我可能错了。看起来它对大多数插件都有效,但它没有检测到wx,wx必须通过windows安装程序安装在env中,而不是通过pip或简易安装。但是冷冻看起来是个很棒的工具,谢谢!大多数以前对Windows很麻烦的软件包(numpy、PIL等)现在都有.whl文件可用。使用最新版本的pip,
    pip安装
    应该能够找到这些软件包的.whl文件,从而像任何其他软件包一样轻松地执行安装。当前“使环境可重新定位”的文档(正确地)说:“警告:
    --relocatable
    选项目前存在许多问题,不能保证在所有情况下都能正常工作。在未来的virtualenv版本中,该选项可能会被弃用。“重新创建python环境(例如,通过pip冻结/安装要求)可能总是比尝试创建一个可移植/可重新定位的环境更可取。