python-packaging - 诗歌:如何发布针对多个 Python 版本的项目包?
问题描述
我有一个项目我想发布为针对两个 Python 版本 (3.6 和 3.8)的包。
我的理解:
- 如何使用
pyenv
. - 如何
poetry
创建与所选 Python 版本相对应的虚拟环境。 - 如何设置
pyproject.toml
以指定 python 版本、管理依赖项以及使用此配置发布包。
我不明白的是:如何为多个 Python 版本发布同一个包?我不能是唯一一个有这个用例的人,对吧?
- 需要两个
pyproject.toml
文件吗?(一个用于每个 python 版本和一组相应的依赖项......) - 是否有既定的方法可以用诗歌做到这一点,或者是否需要其他工具/工作流程?
编辑
做更多的挖掘,我发现这个https://python-poetry.org/docs/versions/#multiple-constraints-dependencies看起来可能是相关的。
这是上面链接中的示例。
[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.9
,3.10
等,这是不正确的。
推荐阅读
- kubernetes - Prometheus 指标与 kubernetes 仪表板中的 kubestate 指标不匹配
- javascript - 如何在使用隐式fluch记录内容后重新加载页面
- php - 在 PHP 中的数组 (2) 中查找并输出数组 (1) 中未列出的元素
- abap - 功能模块MESSAGES GIVE,如何查找错误?
- yocto - Yocto 部署调试或发布预构建?
- javascript - 如何设置位置值以相对于客户端宽度水平滚动
- wordpress - 如何从wordpress中的谷歌标签栏中删除页面名称
- barcode-scanner - 如何将条码扫描仪的输出输入两个系统?
- spring-boot - Spring 自动配置尝试从 application.properties 设置一些 bean 值,而我只想在其他地方使用这些信息?
- python - 如何仅将两列熊猫数据框移动到特定位置?