【问题标题】:How can I list the extra features of a Python package如何列出 Python 包的额外功能
【发布时间】:2020-12-04 06:15:07
【问题描述】:

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

pip install requests[security]

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

我在 pip 文档中找不到类似的内容。

【问题讨论】:

  • 我知道现在有一种直截了当的方法,而且确实很不错。

标签: python pip package


【解决方案1】:

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

与此同时,jaraco 提供了一种使用importlib_metadata 的 API 并适用于已安装包的解决方法。

复制粘贴到下面:

更好的选择是使用具有 API 的 importlib_metadata。

>>> 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'"]

并使用打包来解析它们:

>>> 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"')>

【讨论】:

  • 感谢您的解决方法,它有效 :) 如果可以将这样的功能作为 pip 的一部分实现,那就太好了!我已经评论了github问题
猜你喜欢
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
  • 2011-01-14
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 2010-09-08
相关资源
最近更新 更多