如何通过Poetry从GitHub安装包时加载指定依赖Groups?
解决方法
要让下游项目通过Poetry从GitHub引入myutils时能安装指定依赖组,核心是把myutils的依赖组映射为Poetry的extras,步骤如下:
1. 修改myutils的pyproject.toml,关联依赖组与extras
Poetry的依赖组(dependency groups)和extras是独立概念,需显式映射才能让下游识别。在myutils的配置文件中添加extras映射:
# 保留原有的依赖组定义 [tool.poetry.group.visualisation.dependencies] # 示例依赖,可替换为实际内容 matplotlib = "^3.7" seaborn = "^0.12" [tool.poetry.group.types-stubs.dependencies] # 示例依赖,可替换为实际内容 types-requests = "^2.31" types-pandas = "^2.0" # 添加依赖组到extras的映射 [tool.poetry.extras] visualisation = ["group:visualisation"] types-stubs = ["group:types-stubs"]
2. 下游项目引入myutils时指定extras
在downstreamrepo的pyproject.toml中,通过extras参数指定需要的依赖组:
[tool.poetry.dependencies] # 仅安装types-stubs组依赖 myutils = { git = "https://github.com/你的组织/myutils.git", extras = ["types-stubs"] } # 如需同时安装多个组,用逗号分隔 # myutils = { git = "https://github.com/你的组织/myutils.git", extras = ["types-stubs", "visualisation"] }
执行poetry install后,下游项目就会自动安装myutils及对应依赖组的所有依赖。
原问题原因
之前用extras参数无效,是因为myutils未将依赖组映射为extras——Poetry默认不会把内部依赖组暴露为可供下游选择的extras,必须手动配置映射关系。
内容的提问来源于stack exchange,提问作者Tommy Glizda
相关产品推荐
相关产品推荐

