我想获得所有标准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(记录在所述页面和上可导入的模块。例如,像this
和antigravity
这样的复活节彩蛋将不会被列出。您可以在较大的scanned_standard_lib_names
集合中找到它们,通过扫描本地文件获得:
from unbox import scanned_standard_lib_names
assert scanned_standard_lib_names.issuperset({'this', 'antigravity'})