如何通过Poetry为不同Python版本配置同一依赖库的不同版本?
针对不同Python版本配置依赖的不同版本方案
这个需求完全可行,不需要单独创建mylib-3.7版本,你可以通过在pyproject.toml中用数组形式定义条件依赖来实现,避免重复键的报错。
正确的配置方式如下(以flake8为例,5.0.4是其最后支持Python 3.7的版本):
[project.dependencies] flake8 = [ { version = "^6.0.0", python = ">=3.8.1" }, { version = "^5.0.4", python = "<3.8.1" } ]
配置说明:
- 当安装环境的Python版本≥3.8.1时,pip、Poetry等主流包管理工具会自动安装符合
^6.0.0版本范围的flake8; - 当Python版本<3.8.1时,则会安装
^5.0.4的兼容版本,完美适配你的Python 3.7环境。
之前重复写flake8 = ...触发报错,是因为TOML语法不允许同一个键重复出现,而数组形式是PEP 681定义的标准条件依赖写法,主流包管理工具都支持这种配置。
这种方式能让你的单个包版本同时兼容不同Python环境,无需拆分包版本,大幅降低维护成本。
内容的提问来源于stack exchange,提问作者GopherM
相关产品推荐
相关产品推荐

