如何在 Windows 和 Linux 上使用相同的 Python virtualenv

How to use the same Python virtualenv on both Windows and Linux

我最近开始在同一台 PC 上使用 Windows 和 Linux - 它们安装到两个不同的分区,第三个分区包含公共数据和存档。从 Windows 创建的 virtualenvs 是用文件夹 "Scripts" 创建的,而 Linux 中的对应文件是文件夹 "bin"。

这里的问题是这些文件夹中的文件与两个操作系统不兼容。例如bin中包含的"activate"(在Linux中创建)在Windows中不包含运行,另一方面,Scripts中的"activate" (创建于 Windows)无法在 Linux 上执行。

有没有办法在两个操作系统上使用相同的 virtualenv?

简答,不。但是您可以共享 venv 构建脚本。

  1. pip freeze 所有库到一个 requirements.txt 文件。

    pip freeze > requirements.txt
    
  2. 在每个 OS:

    上创建 venv
    python -m venv env
    source env/bin/activate
    pip install -r requirements.txt  # Install all the libs.
    

无法在 OS 之间共享 venvs 的原因有多种:

  1. 有些软件包包含 C 扩展,OS'.dll 彼此不兼容。
  2. venvs 包含带有硬编码路径的脚本。 Windows 和 Linux 路径不同。