如何在同一代码仓库创建不同依赖规模的Python包变体?
为Python包创建不同依赖变体的实现方案
完全可以在同一仓库里实现这种带可选依赖的包变体,核心是用setuptools的extras_require参数来定义不同的依赖组。
具体实现步骤
- 把所有用户都需要的基础轻量依赖放在
install_requires参数中 - 在
setup()函数里添加extras_require参数,按变体分组定义专属依赖:from setuptools import setup setup( name="myrepo", version="1.0.0", install_requires=[ # 所有场景都需要的基础依赖,比如轻量工具库 "requests>=2.25.0" ], extras_require={ "full": [ # 完整功能所需的重量级依赖,比如torch "torch>=2.0.0" ], "little": [ # 轻量版的额外依赖(如果有需要补充的轻量库),若仅需剔除torch,此处可留空 ] }, # 其他原有配置如packages、author等保持不变 )
用户安装方式
用户可以通过方括号指定要安装的变体:
- 基础版(仅含
install_requires内的依赖):pip install myrepo - 完整版(基础依赖+full组的所有依赖):
pip install myrepo[full] - 轻量版(基础依赖+little组的依赖):
pip install myrepo[little]
参考文档
setuptools官方文档中的「可选依赖(Optional Dependencies)」章节,详细说明了extras_require的用法、最佳实践和扩展场景。
内容的提问来源于stack exchange,提问作者Learning from masters
相关产品推荐
相关产品推荐

