给定模块名称列表(例如 mymods = ['numpy', 'scipy', ...]),我如何检查模块是否可用?
我尝试了以下但它不正确:
for module_name in mymods:
try:
import module_name
except ImportError:
print "Module %s not found." %(module_name)
谢谢。
最佳答案
您可以同时使用 __import__
函数,如@Vinay 的回答,和 try
/except
,如您的代码所示:
for module_name in mymods:
try:
__import__(module_name)
except ImportError:
print "Module %s not found." %(module_name)
或者,要仅检查可用性但不实际加载模块,您可以使用标准库模块imp :
import imp
for module_name in mymods:
try:
imp.find_module(module_name)
except ImportError:
print "Module %s not found." %(module_name)
如果您确实只想检查可用性,而不是(还)加载模块,特别是对于需要一段时间加载的模块,这可能会快得多。但是请注意,第二种方法仅专门检查模块是否存在——它不会检查可能需要的任何其他模块的可用性(因为被检查的模块试图import
其他模块加载时)。根据您的确切规范,这可能是一个加号或一个减号!-)
关于python - 在 Python 中以编程方式检查模块可用性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2617704/