减少 requirements.txt
Reducing requirements.txt
有没有办法减少我的 requirements.txt 我在一年前切换到 Python,那时我并不完全了解事情是如何运作的。因此,当我需要创建 requirements.txt 时,我只是冻结了 pip 并复制了所有要求。今天我知道我不需要它们全部只是导入其他需求的顶级有没有办法实现它?
有几个选项。
pip-tools
如果您在项目中使用pip
,您可以欣赏pip-tools。首先将您的需求手动放入 requirements.in
,然后使用 pip-compile
您可以生成包含所有依赖项的最终 requirements.txt
。假设您项目的依赖项是 Django 和 Ansible。你像这样把它们放入 requirements.in
中:
# requirements.in
django
ansible
然后运行pip-compile
得到整个依赖图:
$ pip-compile requirements.in
#
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile requirements.in
#
ansible==2.9.12 # via -r requirements.in
cffi==1.14.2 # via cryptography
cryptography==3.1 # via ansible
django==1.11.29 # via -r requirements.in
jinja2==2.11.2 # via ansible
markupsafe==1.1.1 # via jinja2
pycparser==2.20 # via cffi
pytz==2020.1 # via django
pyyaml==5.3.1 # via ansible
six==1.15.0 # via cryptography
诗歌
如果您正在使用 Poetry,那么您可以通过 poetry add
继续添加依赖项,并在需要时最终导出它们。否则你可以跳过导出步骤,因为 poetry 可以通过 poetry build
:
为你生成分发包
$ poetry add django
Using version ^3.1 for django
Updating dependencies
Resolving dependencies... (1.4s)
Writing lock file
Package operations: 3 installs, 0 updates, 0 removals
- Installing asgiref (3.2.10)
- Installing sqlparse (0.3.1)
- Installing django (3.1)
您可以在 pyproject.toml
中找到所有依赖项。如果您需要将其导出到 requirements.txt
:
$ poetry export -f requirements.txt -o requirements.txt --without-hashes
我正在使用 --without-hashes
,因为 AppEngine 有问题
有没有办法减少我的 requirements.txt 我在一年前切换到 Python,那时我并不完全了解事情是如何运作的。因此,当我需要创建 requirements.txt 时,我只是冻结了 pip 并复制了所有要求。今天我知道我不需要它们全部只是导入其他需求的顶级有没有办法实现它?
有几个选项。
pip-tools
如果您在项目中使用pip
,您可以欣赏pip-tools。首先将您的需求手动放入 requirements.in
,然后使用 pip-compile
您可以生成包含所有依赖项的最终 requirements.txt
。假设您项目的依赖项是 Django 和 Ansible。你像这样把它们放入 requirements.in
中:
# requirements.in
django
ansible
然后运行pip-compile
得到整个依赖图:
$ pip-compile requirements.in
#
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile requirements.in
#
ansible==2.9.12 # via -r requirements.in
cffi==1.14.2 # via cryptography
cryptography==3.1 # via ansible
django==1.11.29 # via -r requirements.in
jinja2==2.11.2 # via ansible
markupsafe==1.1.1 # via jinja2
pycparser==2.20 # via cffi
pytz==2020.1 # via django
pyyaml==5.3.1 # via ansible
six==1.15.0 # via cryptography
诗歌
如果您正在使用 Poetry,那么您可以通过 poetry add
继续添加依赖项,并在需要时最终导出它们。否则你可以跳过导出步骤,因为 poetry 可以通过 poetry build
:
$ poetry add django
Using version ^3.1 for django
Updating dependencies
Resolving dependencies... (1.4s)
Writing lock file
Package operations: 3 installs, 0 updates, 0 removals
- Installing asgiref (3.2.10)
- Installing sqlparse (0.3.1)
- Installing django (3.1)
您可以在 pyproject.toml
中找到所有依赖项。如果您需要将其导出到 requirements.txt
:
$ poetry export -f requirements.txt -o requirements.txt --without-hashes
我正在使用 --without-hashes
,因为 AppEngine 有问题