减少需求.txt

ura*_*rag 1 python requirements.txt

有没有办法减少我的requirements.txt 我一年前改用Python,那时我还没有完全理解事情是如何工作的。所以当我需要创建 requirements.txt 时,我只是做了一个 pip freeze 并复制通过了所有的要求。今天我知道我不需要它们都只是顶级的导入其他要求有没有办法实现它?

yed*_*tko 5

有几个选项。

pip工具

如果你pip在你的项目中使用,你可以欣赏pip-tools。首先将您的需求手动放入requirements.in,然后使用pip-compile您可以生成requirements.txt所有依赖项的最终版本。假设您的项目的依赖项是 Django 和 Ansible。你把它们变成requirements.in这样:

# requirements.in
django
ansible
Run Code Online (Sandbox Code Playgroud)

然后运行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
Run Code Online (Sandbox Code Playgroud)

诗歌

如果您正在使用Poetry,那么您可以通过 继续添加依赖项poetry add,并在需要时最终导出它们。否则,您可以跳过导出步骤,因为诗歌可以通过以下方式生成用于分发的包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)
Run Code Online (Sandbox Code Playgroud)

您可以在pyproject.toml. 如果您需要将其导出到requirements.txt

$ poetry export -f requirements.txt -o requirements.txt --without-hashes

我正在使用--without-hashes,因为 AppEngine 有问题