【问题标题】:Add relative paths to configuration file virtualenv_path_extensions.pth将相对路径添加到配置文件 virtualenv_path_extensions.pth
【发布时间】: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


    【解决方案1】:

    通常环境与特定路径相关联。这意味着您无法移动环境或将其复制到另一台计算机。您可以使用以下命令修复环境以使其可重定位:

    $ virtualenv --relocatable ENV
    

    这将使 setuptools 创建的一些文件使用相对路径,并将所有脚本更改为使用activate_this.py,而不是使用 Python 解释器的位置来选择环境。

    注意: 可重定位的脚本只有在virtualenv 被激活时才能工作,特别是来自virtualenv 的python 可执行文件必须是系统路径中的第一个。另请注意,virtualenv --relocatable 目前无法重定位激活脚本。

    注意:您必须在将任何软件包安装到环境中后运行它。如果您使环境可重定位,然后安装新软件包,则必须再次运行 virtualenv --relocatable

    此外,这不会使您的包跨平台。您可以移动目录,但它只能在其他类似的计算机上使用。一些已知的可能导致不兼容的环境差异:不同版本的 Python,当一个平台使用 UCS2 作为其内部 unicode 表示而另一个使用 UCS4(编译时选项)时,明显的平台变化,如 Windows 与 Linux,或 Intel 与 Linux。 ARM,如果您有绑定到系统上 C 库的库,如果这些 C 库位于不同的位置(不同的版本或不同的文件系统布局)。

    【讨论】:

    • 感谢您的回答 - 它对现有文档的文档进行了很好的总结。尽管“有没有办法可以将相对路径添加到配置文件,例如 virtualenv_path_extensions.pth”,但它实际上并没有回答这个问题。由于文档中没有明确的答案(据我所知),我想知道是否有特定的符号可以在这些 pth 文件中写入相对路径(如果它们在没有硬编码位置的情况下完全可以工作)。
    • 似乎已被弃用。 : /
    猜你喜欢
    • 1970-01-01
    • 2021-01-02
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多