pip 的操作系统特定要求

Posted

技术标签:

【中文标题】pip 的操作系统特定要求【英文标题】:Operating-system specific requirements with pip 【发布时间】:2013-04-07 08:14:01 【问题描述】:

是否可以在 pip 的 requirements.txt 文件中包含操作系统特定的要求?

例如: 我依赖于 readline,因此,如果安装在 Windows(或 OSX)上,则需要 pyreadline。如果是 linux,那么我不想强制安装。

【问题讨论】:

不。我不这么认为。这应该处理一些部署。此外,如果这是您想要分发给人们使用的项目,请不要分发 requiremnts.txt。 @CppLearner 从不distribute requirements.txt ?这不是它的目的吗? 嗯,这就是我所说的“如果这是一个项目”。如果您正在编写项目,请使用setup.py 【参考方案1】:

您可以使用PEP-508 中指定的“环境标记”来执行此操作:

这是在requirements.txt 中使用此类标记的示例:

pyreadline==2.1; platform_system == "Windows"

同样,setup.py:

setup(
    ...
    install_requires=['pyreadline; platform_system == "Windows"'],
)

【讨论】:

在 Python 3.7 中,我不得不在 setup.py 文件 install_requires 中使用分号,如下所示: install_requires=["pywin32 > 1.0 ; sys.platform == 'win32'"], PEP 496 为 状态:被拒绝。我已经用适当的替代品更新了你的帖子,即 PEP 508。这也解释了@electromechanick 提到的混淆。 仅供参考 Mac system_platform 是“达尔文”【参考方案2】:

最后,在 setup.py 中添加操作系统检查是我发现其他人使用的。例如:

install_requires = [
        "parsedatetime >= 1.1.2",
        "colorama >= 0.2.5",
        "pycrypto >= 2.6"
        ] + ["pyreadline >= 2.0"] if "win" in sys.platform else [],

link to full setup.py with example code

【讨论】:

不要使用这个。这在发布时曾经很好(早在安装期间执行 setup.py 的日子),但现代的工作方式是构建一个***,其中包含安装包的所有内容。 哇,这太旧了......我会继续,让另一个答案被接受......

以上是关于pip 的操作系统特定要求的主要内容,如果未能解决你的问题,请参考以下文章

如何在本地文件系统上为 tarball 创建 pip 要求文件?

pip 安装特定版本的模块

pip 要求说明符:逗号的作用

pip 安装特定版本的 PyQt5

PIP常用操作

淌坑:使用pip安装TensorFlow