减少需求

问题描述

有没有一种方法可以减少我的需求。一年前我改用Python,那时我还不完全了解它是如何工作的。因此,当我需要创建requirements.txt时,我只是冻结了一点并复制了所有要求。今天,我知道我并不需要仅在导入其他需求的顶层就可以实现这些目标?

解决方法

有一些选择。

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 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遇到了问题

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...