在Python中以编程方式检查模块可用性?

4 python module python-module

给出模块名称列表(例如mymods = ['numpy','scipy',...])如何检查模块是否可用?

我试过以下但是不正确:

for module_name in mymods:
  try:
    import module_name
  except ImportError:
    print "Module %s not found." %(module_name)
Run Code Online (Sandbox Code Playgroud)

谢谢.

Ale*_*lli 9

你可以使用这两个__import__功能,如@维奈的回答,一个try/ except,因为在你的代码:

for module_name in mymods:
  try:
    __import__(module_name)
  except ImportError:
    print "Module %s not found." %(module_name)
Run Code Online (Sandbox Code Playgroud)

或者,只是检查可用性但没有实际加载模块,您可以使用标准库模块imp:

import imp
for module_name in mymods:
  try:
    imp.find_module(module_name)
  except ImportError:
    print "Module %s not found." %(module_name)
Run Code Online (Sandbox Code Playgroud)

这可以基本上更快,如果你只是要检查可用性,(还)没有加载模块,特别是对那些需要一段时间来加载模块.但请注意,第二种方法仅专门检查模块是否存在 - 它不会检查可能需要的任何其他模块的可用性(因为正在检查的import模块在加载时尝试使用其他模块).根据您的确切规格,这可能是加号或减号! - )