Mar*_*rty 5 python pip pypi python-packaging
在requires_distpypi的json响应中,给出:
requires_dist : [
"bcrypt; extra == 'bcrypt'",
"argon2-cffi (>=16.1.0); extra == 'argon2'"
]
Run Code Online (Sandbox Code Playgroud)
谁能说清楚每个相关的第二份声明,extra == 'bcrypt'和extra == 'argon2'?
如果您明确要求常规功能,则除了常规依赖关系外,还可以安装其他依赖项。将它们视为可选功能。
您可以使用包名称后面的名称来安装它们==。例如,如果您要安装somepackage并想要添加bcrypt可选功能,请使用:
pip install somepackage[bcrypt]
Run Code Online (Sandbox Code Playgroud)
要么
pip install somepackage[argon2]
Run Code Online (Sandbox Code Playgroud)
或者,要同时包含两个可选的附加功能,请用逗号分隔名称:
pip install somepackage[bcrypt,argon2]
Run Code Online (Sandbox Code Playgroud)
尽管somepackage[...]多次使用也pip很聪明,足以知道已经安装了主软件包。
pip(或其他任何软件包安装工具)将列出的名称映射<packagename>[<extras_name>(,...)]到requires_dict使用该<dependency_spec>; extra == '<extras_name>'格式的条目中,然后将dependency_specs 添加到要安装的东西列表中。
请参阅《Python打包用户指南》的“ 安装软件包”部分中的“安装Setuptools“其他”。
由安装的软件包本身来检测是否安装了可选附加功能的所有依赖项。一种常见的模式是使用try...except ImportError:防护来测试可用的此类额外依赖项。