诗歌:如何发布针对多个Python版本的项目包?

Poetry: How to publish project packages targeting multiple Python versions?

我有一个项目我想发布为针对两个Python版本(3.6和3.8)的包 .

我的理解:

我不明白的是:如何为多个 Python 版本发布同一个包?我不可能是唯一一个有这个用例的人吧?

编辑

进一步挖掘后,我发现这个 https://python-poetry.org/docs/versions/#multiple-constraints-dependencies 看起来可能相关。

以上 link 处的示例。

[tool.poetry.dependencies]
foo = [
    {version = "<=1.9", python = "^2.7"},
    {version = "^2.0", python = "^3.4"}
]

我还发现您可以像这样使用 poetry add 指定 Python 版本...

poetry add cleo --python 3.6.10

像这样在 pyproject.toml 中添加依赖项...

cleo = {version = "^0.8.1", python = "3.6.10"}

去试验看看是否有效。

您的 pyproject.toml 中可能需要类似的东西:

[tool.poetry.dependencies]
python = '3.6 || 3.8'

但是我不确定确切的表示法,它有点模糊。

似乎生成了一个 setup.py,内容如下:

'>=3.6, !=2.7.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.7.*'

所以这将包括 3.93.10 等,这是不正确的。

没有。您不需要创建多个 pyproject.toml 文件或以其他方式为每个 Python 目标版本创建单独的工作流程(至少针对类似版本的特定情况)。

你可以简单地使用依赖语法来表示你想要像这样定位 >=3.6<4.0...

[tool.poetry.dependencies]
python = '^3.6'

然后类似的添加依赖...

poetry add <dependency> python ^3.6

结果是这样的...

[tool.poetry.dependencies]
python = '^3.6'
cleo = {version = "^0.8.1", python = "^3.6"}
pyyaml = {version = "^5.4.1", python = "^3.6"}
...

虽然我进一步降低了一些依赖性以避免在某些主机上不兼容,但它确实有效。

pyyaml = {version = "^5.0", python = "^3.6"}
...