如何结合requirements.txt的pip安装与PEP508可选额外包?
解决方案
方法1:拆分依赖文件
最直接的方式是按场景拆分requirements文件,清晰区分基础依赖和场景依赖:
- 基础依赖文件
requirements.txt:pandas >= 2 - 测试场景依赖文件
requirements-test.txt:pytest[test] >= 7 pytest-testdox[test] - 安装时合并加载:
pip install -r requirements.txt -r requirements-test.txt
方法2:用空配置模拟extra(避免生成自定义包)
如果不想拆分文件,可通过setup.cfg定义场景依赖,但不声明任何实际项目包,这样既能用extra语法触发安装,又不会生成多余的本地包:
- 创建
setup.cfg文件:[metadata] name = dummy version = 0.0.0 [options.extras_require] test = pytest[test] >= 7 pytest-testdox[test] - 基础依赖仍放在
requirements.txt:pandas >= 2 - 安装基础依赖+测试场景依赖:
pip install -r requirements.txt '.[test]'
原方式失效原因
pip install -r requirements.txt[test]无法生效,是因为pip的-r参数不支持给整个requirements文件附加extra标识。PEP508的[extra]语法仅针对单个包,全局的场景触发是项目配置文件(如pyproject.toml/setup.cfg)的特性,并非requirements.txt的功能。
内容的提问来源于stack exchange,提问作者strpeter
相关产品推荐
相关产品推荐

