创建没有开发依赖关系的requirements.txt

问题描述

在开发中,经常需要我已经安装在venv中的其他软件包,与我也已经安装在venv中的其他软件包相反,生产中不需要这些附加软件包。产生满足所有要求的requirements.txt的最干净方法是什么?除了我只需要开发的一次(例如mypyautopep8

answer显示了如何执行此操作,但是该方法非常麻烦。

解决方法

我建议使用https://pypi.org/project/pip-tools/中的pip-compile

这使您可以定义一个“在”文件requirements.in,该文件仅列出您的顶级依赖项,例如:

requirements.in

flask

然后用requirements.txt生成pip-compile

$ pip-compile --output-file=requirements.txt requirements.in
#
# This file is autogenerated by pip-compile
# To update,run:
#
#    pip-compile --output-file=requirements.txt requirements.in
#
click==7.1.2              # via flask
flask==1.1.2              # via -r requirements.in
itsdangerous==1.1.0       # via flask
jinja2==2.11.2            # via flask
markupsafe==1.1.1         # via jinja2
werkzeug==1.0.1           # via flask

然后,您可以为不同的环境使用单独的.in / .txt文件,例如test.in / test.txt

最后,您可以递归地包含多个需求文件,例如

dev-requirements.txt

-r requirements.txt
-r test.txt
-r lint.txt