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

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

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

【问题讨论】:

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

标签: python operating-system pip


【解决方案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 的日子),但现代的工作方式是构建一个轮子,其中包含安装包的所有内容。
  • 哇,这太旧了......我会继续,让另一个答案被接受......
猜你喜欢
  • 2019-06-09
  • 1970-01-01
  • 2012-06-08
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多