【发布时间】:2018-01-24 17:01:31
【问题描述】:
我正在尝试找到一组必要的步骤,以使 windows 上的 python 3.6 虚拟环境可重定位。
首先我使用以下命令在 virtualenv 15.1.0 上创建了一个虚拟环境:
virtualenv
--always-copy
-a "path\to\project\dir"
-r "path\to\requirements.txt"
venv_name
在此之后,我运行以下命令以使用 virtualenv 内置的“使路径相对”功能:
virtualenv --relocatable venv_name
我的 requirements.txt 的一部分是 pypiwin32 库,至少在通过 pip 安装时,它不会工作,直到:
python Scripts/pywin32_postinstall.py -install
脚本已运行 (See here for details)。
此时,如果我在 venv 目录中搜索硬编码的线索,我会在 scripts\activate.bat 中看到它们,我可以通过更改它来使其相对:
set "VIRTUAL_ENV=C:\path\to\venv"
进入这个:
pushd %~dp0..
set VIRTUAL_ENV=%CD%
popd
还有一些其他的地方我不得不稍微调整以使它们相对(我使用 sublime 的在文件夹中搜索功能和我的用户名作为搜索参数 - 它调出了所有路径\to\username\then \some\more 目录中的样式行。
有 2 条硬编码路径并不那么简单:
1. "路径\to\venv\Lib\orig-prefix.txt"
我知道 orig-prefix.txt 是 venv 所基于的源 python 安装的记录,因此不能真正是相对的,但如果将 venv 移动到另一台机器可能需要留空(它不存在可能会使 python 启动器崩溃,但它的空性很好。)
2。 "path\to\venv\Lib\site-packages\virtualenv_path_extensions.pth"
这更棘手。由于它是一个硬编码路径,然后将其添加到 sys.path 作为查找模块的位置,当我将 venv 移动到不存在该路径的另一台机器时,模块加载将失败。
有没有办法可以在 virtualenv_path_extensions.pth 等配置文件中添加相对路径
【问题讨论】:
标签: python python-3.x virtualenv relative-path