我有一个简单的Flask应用程序,使用virtualenv来管理依赖关系。但是,我想分离我的依赖项。对于测试,我使用 Flask-Testing,但这是一个我不想包含在生产环境中的依赖项。
如何分离我的依赖关系,以便我可以为开发和生产拥有不同的依赖项?
如何分离我的依赖关系,以便我可以为开发和生产拥有不同的依赖项?
requirements.txt
文件,例如requirements_dev.txt
、requirements_prod.txt
等。pip freeze
输出导入到文件中来生成这些文件。pip install -r requirement_file.txt
。 - tayfunpip-tools是正确的工具。我也遇到了同样的问题,所以用这种简单的方式解决了它。
从网站上可以看到:
如果您有不同的环境需要安装不同但兼容的软件包,则可以创建分层要求文件,并使用其中一层来约束另一层。
例如,如果您有一个Django项目,在生产中想要最新的2.1版本,在开发时想要使用Django调试工具栏,则可以创建两个*.in文件,每个文件对应一层:
# requirements.in
django<2.2
# dev-requirements.in
-c requirements.txt
django-debug-toolbar
首先,像往常一样编译requirements.txt:
$ pip-compile
#
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile
#
django==2.1.15
# via -r requirements.in
pytz==2019.3
# via django
$ pip-compile dev-requirements.in
#
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile dev-requirements.in
#
django-debug-toolbar==2.2
# via -r dev-requirements.in
django==2.1.15
# via
# -c requirements.txt
# django-debug-toolbar
pytz==2019.3
# via
# -c requirements.txt
# django
sqlparse==0.3.0
# via django-debug-toolbar
$ pip-sync
您可以通过以下方式在开发阶段安装所需依赖:
$ pip-sync requirements.txt dev-requirements.txt
requirements.txt
文件? - Cédric Julien