pip 10.0.0版本中的pip.get_installed_distributions()是否有任何函数替换?

Web*_*irl 7 python install pip

当我尝试导入pip包并使用pip.get_installed_distributions()时,控制台正在打印错误:

 AttributeError: 'module' object has no attribute 'get_installed_distributions'
Run Code Online (Sandbox Code Playgroud)

有没有解决方案不包括降级点?

hoe*_*ing 8

该功能已移至importlib.metadata子包.具有向后兼容性的导入示例:

$ pip install importlib-metadata
Run Code Online (Sandbox Code Playgroud)


Mme*_*cor 7

@hoefling不推荐这是不好的做法,从pip导入项目是不好的做法.内部pip已对此发出警告,在发布第10页之前,他们也发布了关于此事的公告.

一个很好的选择是改为使用systemtools pkg_resources.从那里你可以使用pkg_resources.working_set.请参阅从@pradyunsg的评论在这里.

import pkg_resources

dists = [d for d in pkg_resources.working_set]
# You can filter and use information from the installed distributions.
Run Code Online (Sandbox Code Playgroud)

  • 因此,虽然您的答案是正确的,但真正的糟糕做法是 pip 开发人员所做的。他们应该将旧模块保留在适当的位置,并导入已移动的模块,并为至少一个版本发出“DeprecationWarning”——就像许多优秀项目中所做的那样,Django 就是一个很好的例子。相反,现在我们被迫寻找替换代码。非常感谢“setuptools”开发人员采用了“pep425tags”模块,但现在我必须解决对旧版本“setuptools”的支持,该模块尚不可用。 (2认同)