如何在pyproject.toml中配置仅开发依赖tox并解决安装问题
解决方案
1. 让开发环境自动装上tox
pip install -e . 默认只装项目的主依赖,不会主动安装[project.optional-dependencies]里的可选依赖组。要把tox这类开发依赖装上,得在安装命令里明确指定dev组:
pip install -e ".[dev]"
2. 修复Docker构建时requires.txt的报错问题
setuptools生成的requires.txt会把所有可选依赖的分段(比如[dev])都写进去,但pip install -r不识别这种带[]的分段格式。解决这个有两种办法:
办法一:直接安装包(推荐生产环境用)
生产环境没必要读requires.txt,直接安装构建好的包就行——不管是python build生成的wheel/tar.gz,还是在Docker里直接执行:
pip install .
这样只会安装主依赖,完全符合生产环境的需求。
办法二:过滤requires.txt里的分段标记
如果一定要用requires.txt,就在Dockerfile里加个过滤命令,把带[的行去掉:
grep -v "^\[" mypackage/mypackage.egg-info/requires.txt | pip install -r -
可选优化:拆分依赖组更清晰
如果想把开发工具(比如tox)和测试依赖(比如pytest)分开,可以把可选依赖拆成多个组,管理起来更清楚:
[project.optional-dependencies] dev = [ "tox", # 可以添加black、flake8这类代码规范工具 ] test = [ "pytest", # 可以添加pytest-cov这类测试覆盖率工具 ]
安装的时候按需选择:
# 只装测试依赖 pip install -e ".[test]" # 装所有开发相关的依赖 pip install -e ".[dev,test]"
内容的提问来源于stack exchange,提问作者devnectar
相关产品推荐
相关产品推荐

