问题描述
在开发中,经常需要我已经安装在venv
中的其他软件包,与我也已经安装在venv
中的其他软件包相反,生产中不需要这些附加软件包。产生满足所有要求的requirements.txt
的最干净方法是什么?除了我只需要开发的一次(例如mypy
或autopep8
)
解决方法
我建议使用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