Poetry因无效版本约束跳过依赖包问题解决方法咨询
解决Poetry解析requirements.txt版本约束时跳过依赖的问题
问题根源在于Poetry对requirements.txt中省略逗号的合并版本约束写法(如>=6.1.0<7.0.0)兼容性不足,这类写法不符合PEP 440规范的严格格式,导致Poetry判定约束无效并跳过相关依赖。
以下是几种可行的解决办法:
1. 修复源包的requirements.txt(优先方案)
如果包A由你维护,直接修改其requirements.txt,将所有合并的版本约束添加逗号,转为PEP 440兼容格式:
package-a>=6.1.0,<7.0.0 package-b>=10.2.0,<11.0.0 package-c>=1.0.4,<2.0.0 package-d>=1.1.0,<2.0.0
修改后重新发布包A,项目X更新依赖后即可正常解析约束。
2. 手动在项目X中声明依赖
若无法修改包A的配置,直接在项目X的pyproject.toml中手动添加这些依赖及对应版本约束:
[tool.poetry.dependencies] python = "^3.8" A = "1.0.0" B = "12.0.0" package-a = ">=6.1.0,<7.0.0" package-b = ">=10.2.0,<11.0.0" package-c = ">=1.0.4,<2.0.0" package-d = ">=1.1.0,<2.0.0"
执行poetry lock命令后,这些依赖会被正确加入poetry.lock,执行poetry install时会自动安装。
3. 升级Poetry版本
部分旧版Poetry对非标准格式的版本约束支持较差,尝试升级到最新稳定版:
poetry self update
升级后重新运行poetry lock,检查是否能正常解析原有的约束格式。
内容的提问来源于stack exchange,提问作者Mohan
相关产品推荐
相关产品推荐

