能否在requirements文件中基于其他包版本设置Python可选依赖?
基于其他包版本配置PBR依赖的可行性
不能直接使用argparse; my_package=='2.6'这种语法来配置依赖,因为PBR依赖的setuptools环境标记(environment markers)仅支持预定义的系统/语言相关变量(比如python_version、os_name等),并不包含第三方包的版本变量。
要实现基于其他包版本的条件依赖,可以采用以下几种方案:
使用额外依赖(extras_require):
在setup.cfg或setup.py中定义针对特定包版本的额外依赖组,用户安装时通过指定额外组来触发依赖安装。例如:[options.extras_require] my_package_26 = argparse用户安装时执行:
pip install your-package[my_package_26]动态依赖解析(不推荐):
在setup.py中通过代码检查已安装的my_package版本,动态添加依赖。但这种方式破坏了声明式依赖的原则,可能导致安装过程中出现不可预期的问题,不建议在生产环境使用。使用requirements文件配合外部工具:
可以在requirements.txt中通过工具(如pip-tools)来管理基于其他包版本的依赖,但PBR本身不会直接解析这类自定义条件,需要依赖外部工具处理。
内容的提问来源于stack exchange,提问作者KSS
相关产品推荐
相关产品推荐

