如何针对不同版本的Python包指定不同的额外依赖?
解决方案
可以通过拆分两条依赖规则实现需求,符合PEP 0508语法规范,具体写法如下:
- 基础依赖约束:
rdflib>=4,覆盖所有4.x、5.x、6.x及以上的版本兼容性要求 - 版本专属额外依赖约束:
rdflib[sparql]==5.0.0,仅当安装的rdflib版本正好是5.0.0时,才会要求安装sparql额外依赖
不同配置文件的写法示例
requirements.txt
直接写入两行即可:
rdflib>=4 rdflib[sparql]==5.0.0
pyproject.toml(适配setuptools、poetry等主流构建工具)
[project] dependencies = [ "rdflib>=4", "rdflib[sparql]==5.0.0" ]
原理说明
pip会自动合并同一个包的多条依赖约束,优先选择符合所有版本要求的最新版本:
- 若最终安装rdflib 4.x或6.x及以上版本:第二条
rdflib[sparql]==5.0.0的版本约束不匹配,不会触发额外依赖检查,仅安装基础rdflib包,不会出现pkg_resources运行时报错 - 若最终安装rdflib 5.0.0版本:自动匹配第二条规则,安装sparql对应的额外依赖,保证功能正常
内容的提问来源于stack exchange,提问作者markw
相关产品推荐
相关产品推荐

