创建一个没有开发依赖的 requirements.txt
Creating a requirements.txt without development dependencies
在开发中,通常需要额外的包,我已经在我的 venv
中安装了这些包,而在生产中不需要这些包,这与我也在我的 venv
中安装的其他包相反。产生 requirements.txt
的最干净的方法是什么,它确实具有所有要求,除了我只在开发中需要的一次(比如 mypy
或 autopep8
)
这个answer展示了如何做,但是方法很麻烦。
我建议使用 pip-compile
,来自 https://pypi.org/project/pip-tools/。
这让您可以定义一个“in”文件,requirements.in
,它只列出您的 top-level 依赖项,例如:
requirements.in
:
flask
然后你用 pip-compile
:
生成 requirements.txt
$ 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
在开发中,通常需要额外的包,我已经在我的 venv
中安装了这些包,而在生产中不需要这些包,这与我也在我的 venv
中安装的其他包相反。产生 requirements.txt
的最干净的方法是什么,它确实具有所有要求,除了我只在开发中需要的一次(比如 mypy
或 autopep8
)
这个answer展示了如何做,但是方法很麻烦。
我建议使用 pip-compile
,来自 https://pypi.org/project/pip-tools/。
这让您可以定义一个“in”文件,requirements.in
,它只列出您的 top-level 依赖项,例如:
requirements.in
:
flask
然后你用 pip-compile
:
requirements.txt
$ 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