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 的操作系统特定要求的主要内容,如果未能解决你的问题,请参考以下文章