Poetry构建Python包缺失运行时依赖问题排查咨询
问题原因
你遇到的问题是旧版poetry-core的已知BUG导致的:当你将标记为非可选的全局依赖同时加入[tool.poetry.extras]的任意分组时,构建流程会错误地将这些全局依赖标记为可选属性,导致默认安装包的时候不会自动拉取这些依赖。你配置中的boto3和typer均属于全局非可选依赖,同时又被加入了cli的extra分组,因此触发了该BUG,最终构建出的包依赖列表为空。
修复方案
方案1(推荐):升级poetry及poetry-core版本
该BUG在poetry-core 1.6.0及以上版本已经修复,你可以按以下步骤操作:
- 执行
poetry self update将本地poetry升级到最新稳定版 - 修改
pyproject.toml中[build-system]配置,将requires字段改为:requires = ["poetry-core>=1.6.0"] - 重新执行
poetry build构建安装包即可
方案2:移除extra分组中的全局非可选依赖
如果你暂时无法升级poetry版本,可以直接修改[tool.poetry.extras]下的分组配置,将已经声明为全局非可选的依赖从所有extra分组中移除。比如你的cli分组当前配置为:
cli = [ "boto3", "typer", ]
这两个依赖已经是全局必选,不需要再加入extra分组,直接删除这两个条目即可,extra分组中仅保留原本标记了optional = true的依赖。
验证方法
构建完成后可以执行pip show -v 构建出的whl包路径,查看输出中的Requires字段,确认boto3和typer已经正确出现在依赖列表中。如果需要使用对应额外功能,可通过pip install geostore[分组名]的格式安装对应extra分组的依赖。
内容的提问来源于stack exchange,提问作者l0b0
相关产品推荐
相关产品推荐

