动态获取标准库python包名称的列表



我想获得所有标准lib包的名称列表。

我指的是那些我想解析的https://docs.python.org/3/library/:字符串name

__import__(name)

sys.builtin_module_names看起来很有希望,但事实并非如此

我想解析~/.pyenv/versions/3.8.6/lib/python3.8/或https://docs.python.org/3/library/,但肯定有更好的方法!

附录

对于那些需要X表示Y的人:我静态地导航包的导入来分析它们——也就是说,看看使用了什么第三方包,使用了什么标准libs,频率是多少,等等。

我会在这里发布我的解决方案,但在接受它作为答案之前,我会等着看是否有更好的解决方案。

安装unbox并执行以下操作:

from unbox import builtin_module_names

这将为您的环境的python版本提供一组名称(支持2.7和3.5-3.9(。

为了得到这些,我解析了https://docs.python.org/{version}/library/html页面中的列表,并过滤掉了那些不可导入的页面(从3.8开始(

for name in builtin_module_names:
_ = importlib.import_module(name)

这些名称包含在包的数据文件夹中(作为.csv文件(,可以在github上找到。

请注意,您不会在那里找到所有模块——只有那些(1(记录在所述页面上可导入的模块。例如,像thisantigravity这样的复活节彩蛋将不会被列出。您可以在较大的scanned_standard_lib_names集合中找到它们,通过扫描本地文件获得:

from unbox import scanned_standard_lib_names
assert scanned_standard_lib_names.issuperset({'this', 'antigravity'})

最新更新