如何列出 Python 包的额外功能

Fab*_*ich 6 python pip package

一些 Python 包有额外的功能,可以通过将它们放在括号中来安装,例如requests包的额外安全性

pip install requests[security]
Run Code Online (Sandbox Code Playgroud)

有没有办法列出给定包的所有附加功能?

我在 pip 文档中找不到类似的东西。

小智 7

pip 中有两个关于此的开放功能请求:

与此同时,使用importlib_metadata 的解决方法 jaraco 提供了

复制粘贴如下:

更好的选择是使用 importlib_metadata,它有一个 API。

>>> import importlib_metadata
>>> importlib_metadata.metadata('xonsh').get_all('Provides-Extra')
['linux', 'mac', 'proctitle', 'ptk', 'pygments', 'win']
>>> importlib_metadata.metadata('xonsh').get_all('Requires-Dist')
["distro; extra == 'linux'", "gnureadline; extra == 'mac'", "setproctitle; extra == 'proctitle'", "prompt-toolkit; extra == 'ptk'", "pygments (>=2.2); extra == 'pygments'", "win-unicode-console; extra == 'win'"]
Run Code Online (Sandbox Code Playgroud)

并使用包装来解析它们:

>>> req = next(map(packaging.requirements.Requirement, importlib_metadata('xonsh').get_all('Requires-Dist')))
>>> req.name
'distro'
>>> req.specifier
<SpecifierSet('')>
>>> req.extras
set()
>>> req.marker
<Marker('extra == "linux"')>
Run Code Online (Sandbox Code Playgroud)