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

标签 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)

谢谢。

最佳答案

您可以同时使用 __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/

相关文章:

python - Tensorflow Saver.save无法写入Docker共享卷

c - 如何使用 seq_file 接口(interface)清除终端的输出?

python - 在 3.3 中加载 python 模块时,我用什么代替 PyString_AsString

python - 何时将代码拆分为文件/模块?

python - 列出 python 模块的子模块

python c api创建一个python模块

python - 合成子模块 : from A import B (ok) vs. 导入 A.B(错误)?

python - unittest 无法从 pickle 导入类(AttributeError : Can't get attribute. ..)

python - 找出 _ast 模块的元素,该模块在 ast.py 中导入

python - 德语词性标注