【问题标题】:How to use the same Python virtualenv on both Windows and Linux如何在 Windows 和 Linux 上使用相同的 Python virtualenv
【发布时间】:2017-08-01 16:37:52
【问题描述】:

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

这里的问题是这些文件夹中的文件不兼容两种操作系统。例如,bin 中的“activate”(在 Linux 中创建)不能在 Windows 中运行,而 Scripts 中的“activate”(在 Windows 中创建)则无法在 Linux 上执行。

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

【问题讨论】:

  • 按照这个答案学习如何在两个操作系统中生成相同的虚拟环境(忽略从 python 2 到 3 的变化)stackoverflow.com/a/41390096/267540
  • 我是个菜鸟。我以前从未使用过 Linux……所以我不知道你在告诉我什么
  • 哦,好的。删除了我的评论。

标签: python linux windows virtualenv


【解决方案1】:

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

  1. pip freeze 将所有库添加到 requirements.txt 文件中。

    pip freeze > requirements.txt
    
  2. 在每个操作系统上创建 venv:

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

venvs 不能跨操作系统共享的原因有几个:

  1. 某些包包含 C 扩展,并且操作系统的 .dll 彼此不兼容。
  2. venvs 包含带有硬编码路径的脚本。 Windows 和 Linux 路径不同。

【讨论】:

  • 好的,谢谢硕!那么,从两个操作系统创建的 venv 必须在同一目录中吗? (e.g D:\venv\test) 然后从每一个的rigth文件夹中操作?
  • @Cristianjs19 不,如果你在每个操作系统上构建 venv,你可以把它放在任何地方。但是当共享 venv 文件夹时,需要相同的路径。
  • 对,我想我明白了。我正在证明这一点。非常感谢!
  • 如果无法激活虚拟环境,是否可以“迁移”在 Windows 中创建的虚拟环境(随着时间的推移并安装与 W7 相同的机器,我会遵循答案)?
  • Windows 中的一个小补充 source env/bin/activate 应改为 env\Scripts\activate
猜你喜欢
  • 2013-12-29
  • 1970-01-01
  • 2014-02-28
  • 1970-01-01
  • 2016-03-29
  • 2013-08-12
  • 1970-01-01
  • 2020-08-11
相关资源
最近更新 更多