pypi依赖项中的“额外”是什么?

时间:2018-09-24 08:00:04

标签: python pip pypi python-packaging

在来自pypi的包的json响应的requires_dist : [ "bcrypt; extra == 'bcrypt'", "argon2-cffi (>=16.1.0); extra == 'argon2'" ] 部分中,给出:

extra == 'bcrypt'

有人能清楚说明每个依赖项extra == 'argon2'.gettempdir()的第二条语句吗?

1 个答案:

答案 0 :(得分:5)

其他是依赖项,如果您明确要求,则可以在常规依赖项之外另外安装 。将它们视为可选功能。

您可以使用==之后的名称和软件包名称来安装它们。例如,如果您安装somepackage并想添加bcrypt可选功能,请使用:

pip install somepackage[bcrypt]

pip install somepackage[argon2]

或者,要包括两个可选的附加功能,请用逗号分隔名称:

pip install somepackage[bcrypt,argon2]

尽管多次使用somepackage[...]也可以工作,因为pip足够聪明,可以知道已经安装了主软件包。

pip(或任何其他软件包安装工具)将<packagename>[<extras_name>(,...)]中列出的名称映射到requires_dict中使用<dependency_spec>; extra == '<extras_name>'格式的条目,并在{{ 1}}到要安装的东西的列表。

请参见Installing Setuptools "Extras"安装软件包部分中的Python Packaging User Guide

由安装的软件包本身来检测是否安装了可选附加功能的所有依赖项。一种常见的模式是使用dependency_spec防护措施来测试可用的此类额外依赖项。