如何在Python Poetry中指定操作系统依赖项?

5

如果我想开发一个仅在Linux和macOS上工作的Python包。我该如何在Python Poetry中指定这个限制?


你能分享一下你的 pyproject.toml 文件吗? - Sabil
当然可以!https://gitlab.com/JoD/exact/-/blob/master/python/pyproject.toml - HolKann
2个回答

10
pyproject.toml文件中,Trove分类器可用于指定支持哪些操作系统。对于Linux和MacOS,这将是:
[tool.poetry]
classifiers = [
    "Operating System :: MacOS",
    "Operating System :: POSIX :: Linux"
]

这将无法阻止诗歌在使用poetry install命令时尝试在其他平台上安装软件包。支持特定于平台的wheel标签已在GitHub问题#2051中提出,该问题正在写作时列入诗歌1.2版本发布的待办事项列表
要指定在另一个诗歌项目的依赖项中安装软件包的平台,可以使用环境标记
[tool.poetry.dependencies]
yourpackage = {version = "*", markers = "sys_platform == 'linux' or sys_platform == 'darwin'"}

当在其他平台上使用poetry install时,诗歌将忽略yourpackage,但不会产生任何错误。如果它是一个硬性依赖项,则最好在其他地方指示支持哪些平台。

2
在这份文档中提到支持环境标记,你可以使用sys_platform标记。

有趣,我错过了这个。所以现在我已经向包的pyproject.toml文件中添加了两行:[tool.poetry.dependencies] ... sys_platform = "linux" platform_machine = "x86_64"并运行poetry build。然而,生成的wheel名称仍然是 package-version-py3-none-any.whl而不是预期的package-version-py3-linux-x86_64.whl。我还没有完全掌握它... - HolKann
我不确定这是否有效,但可以尝试一下: [tool.poetry.dependencies] python = {version="^3.7", markers="sys_platform=='linux'"} - Sujal Singh
嗯,是的,使用 [tool.poetry.dependencies] cppyy = {version="^2.1.0", markers="sys_platform=='linux'"} 编译了,但没有改变 none-any.whl。我也有这样的感觉,这会改变包依赖项的平台限制,而不是包本身的平台限制。 - HolKann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接