【问题标题】:The same list of python libraries for Ubuntu and Windows适用于 Ubuntu 和 Windows 的相同 python 库列表
【发布时间】:2016-04-13 13:30:41
【问题描述】:

我的 PC 上同时安装了 Windows 和 Ubuntu。
通常,我在 Ubuntu 上使用 Python,但有时,我需要将我的脚本编译为 Windows .exe 文件。为此,我需要在 Windows 上安装与在 Ubuntu 上相同的 python 库列表。

我已经尝试用

解决这个问题
  • pip freeze > requirements.txt
  • pip install -r requirements.txt

但第二个操作会在许多库上引发错误,例如 apturl,当然还有 unity-scope,例如 - “找不到 blah-blah-blah”。现在我只是手动安装所有需要的库,但这很无聊。

在 Win 和 Linux 之间“同步”python 库列表的最佳方式是什么?



经过一番思考
好的,我有一个想法和另一个问题 - 是否可以忽略所有“找不到”错误并继续到列表中的下一个元素?

【问题讨论】:

  • 查看脚本中的import 语句,然后在Windows 上安装这些模块。不太难...
  • 这是我现在所做的,但也许有任何自动化的解决方案?)
  • 您提到了 apturlunity-scope 之类的库,它们可能是 Ubuntu 的库,而不是您使用 pip 安装的模块。如果这是正确的,那么哪些模块使用了这个库?他们是仅限linux的吗?当pip install 失败时,如何手动安装它们?如果这些依赖确实如此复杂,为什么不考虑使用虚拟机呢?
  • 目前我只手动安装我真正需要的模块(如请求、pyqt 等),而不是依赖于 Ubuntu。

标签: python linux windows ubuntu


【解决方案1】:

尝试一一设置

Linux

xargs -a requirements.txt -n 1 pip install

窗户

import sys
import pip

def install(package):
    pip.main(['install', package])

if __name__ == '__main__':
    with open(sys.argv[1]) as f:
        for line in f:
            install(line)

找到here

正如已经提到的,不要忘记系统范围的数据包,pip + virtualenv 在某些情况下玩得不好,你必须使用外部工具。

我认为pip accel 会非常适合它。它只是一个 pip 包装器,似乎可以解决您的所有问题。

此外,由于 0.9 版 pip-accel 包含一个简单的机制,可以在构建失败时检测丢失的系统包,并提示用户是否安装丢失的依赖项并重试构建。

pip-accel 程序目前在 cPython 2.6、2.7、3.4 和 3.5 和 PyPy (2.7)。自动化测试套件定期在 Ubuntu Linux (Travis CI) 和 Microsoft Windows (AppVeyor) 上运行。此外 对于这些平台,pip-accel 应该在大多数 UNIX 系统上都能正常工作 (例如 Mac OS X)。

【讨论】:

  • Windows cmd shell 等效项:for /f "delims=" %a in (requirements.txt) do @pip install "%a".
【解决方案2】:

我看到解决此问题的方法是使用python virtualenvironmentpip freeze > requirements.txt 如果您在系统 python 安装中使用它,它会非常粗糙。虚拟环境是一个隔离的 python 安装,允许您在不同的项目中有不同的 python 需求,并且能够可靠地在不同的环境中重现 python 依赖项。在您的两个操作系统上安装 virtualenv 后(Ubuntu 上为apt-get install python-virtualenv,Windows 网站上的说明),工作流程将类似于以下内容:

  1. 创建一个没有系统包的 virtualenv (virtualenv /path/to/env)
  2. 激活 virtualenv(源 /path/to/env/bin/activate)
  3. 只包含您需要的库创建一个 requirements.txt 文件(取决于您在系统 python 安装中有多少,手动执行此操作可能会更容易)
  4. pip install -r requirements.txt 在你漂亮的新虚拟环境中检查你的代码是否有效。 (python myscript.py)
  5. 对其他操作系统重复 1,2 和 4。

正如@vrs 所说,您的要求中的某些内容取决于apturlunity-scope(特定于linux)有点奇怪,但是如果您的项目实际上只依赖于python 包,那么上面应该可以工作只要您可以在两种环境中启动并运行virutalenv,就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2016-11-03
    • 1970-01-01
    • 2022-10-01
    • 2022-11-21
    • 1970-01-01
    相关资源
    最近更新 更多