标准库在Python的
文档中定义。您可以在那里搜索,或将模块名称放入列表中并使用程序进行检查。
此外,在Python 3.4中,有一个新的
隔离模式,允许忽略某些用户定义的库路径。在以前的Python版本中,您可以使用
-s
来忽略每个用户的环境,使用
-E
来忽略系统定义的变量。
在Python2中,检查模块是否属于标准库的一种非常简单的方法是清除
sys.path
:
>>> import sys
>>> sys.path = []
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named numpy
>>> import traceback
>>> import os
>>> import re
然而,这在Python3.3+中不起作用:
>>> import sys
>>> sys.path = []
>>> import traceback
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'traceback'
[...]
这是因为从python3.3开始,导入机制发生了改变,并且导入标准库使用与导入任何其他模块相同的机制(请参阅
文档)。
在python3.3中,确保仅限于stdlib导入成功的唯一方法是将只有标准库路径添加到
sys.path
中,例如:
>>> import os, sys, traceback
>>> lib_path = os.path.dirname(traceback.__file__)
>>> sys.path = [lib_path]
>>> import traceback
>>> import re
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'numpy'
我使用了
traceback
模块来获取库路径,因为这应该在任何系统上都有效。
对于内置模块,它们是标准库模块的
子集,您可以检查
sys.builtin_module_names
。
import
是第三方的。 - jonrsharpe