con*_*xyz 5 python-packaging python-poetry
我有一个项目想要发布为针对两个 Python 版本(3.6 和 3.8)的包。
我的理解是:
pyenv.poetry创建与所选 Python 版本相对应的虚拟环境。pyproject.toml以指定 python 版本、管理依赖项以及使用此配置发布包。我不明白的是:如何为多个 Python 版本发布同一个包?我不可能是唯一一个拥有此用例的人,对吗?
pyproject.toml文件吗?(每个 python 版本和一组相应的依赖项都有一个......)做了更多的挖掘,我发现这个https://python-poetry.org/docs/dependency-specation/#multiple-constraints-dependencies看起来可能是相关的。
这是上面链接中的示例。
[tool.poetry.dependencies]
foo = [
{version = "<=1.9", python = "^2.7"},
{version = "^2.0", python = "^3.4"}
]
Run Code Online (Sandbox Code Playgroud)
poetry add我还发现你可以使用这样指定Python版本...
poetry add cleo --python 3.6.10
Run Code Online (Sandbox Code Playgroud)
这会像这样添加依赖项pyproject.toml......
cleo = {version = "^0.8.1", python = "3.6.10"}
Run Code Online (Sandbox Code Playgroud)
要去尝试一下,看看这是否有效。
不需要。您不需要创建多个pyproject.toml文件或以其他方式为您要定位的每个 Python 版本创建单独的工作流程(至少对于针对类似版本的特定情况)。
您可以简单地使用依赖语法来表示您想要像这样定位 >=3.6<4.0...
[tool.poetry.dependencies]
python = '^3.6'
Run Code Online (Sandbox Code Playgroud)
然后类似地添加依赖项......
poetry add <dependency> python ^3.6
Run Code Online (Sandbox Code Playgroud)
结果是这样的......
[tool.poetry.dependencies]
python = '^3.6'
cleo = {version = "^0.8.1", python = "^3.6"}
pyyaml = {version = "^5.4.1", python = "^3.6"}
...
Run Code Online (Sandbox Code Playgroud)
这很有效,尽管我进一步降低了一些依赖项的具体程度,以避免某些主机上的不兼容。
pyyaml = {version = "^5.0", python = "^3.6"}
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6620 次 |
| 最近记录: |