从stringvariables导入模块

我正在为嵌套matplotlib(MPL)库,它不同于MPL自己提供的,由感兴趣的子模块包的文档(个人)。 我正在编写Python脚本,我希望能够从未来的MPL版本自动生成文档。
我select了感兴趣的子模块/包,并想列出他们的主要类,我将生成列表并使用pydoc

问题是,我找不到一种方法来指示Python从string中加载子模块。 这是我尝试的例子:

 import matplotlib.text as text x = dir(text) 

 i = __import__('matplotlib.text') y = dir(i) 

 j = __import__('matplotlib') z = dir(j) 

这里是通过pprint的以上列表的三路比较:

在这里输入图像描述

我不明白在y对象中加载了什么东西 – 它是matplotlib加上其他东西,但它缺less我想要的信息,这是matplotlib.text包中的主要类。 这是截图( x列表)上顶部的蓝色部分

请不要build议狮身人面像不同的方法。

__import__函数可能有点难以理解。

如果你改变

 i = __import__('matplotlib.text') 

 i = __import__('matplotlib.text', fromlist=['']) 

那么i会参考matplotlib.text

在Python 2.7和Python 3.1或更高版本中,您可以使用importlib

 import importlib i = importlib.import_module("matplotlib.text") 

一些笔记

  • 如果你想从子文件夹中导入某些东西,例如./feature/email.py ,那么代码将看起来像importlib.import_module("feature.email")

  • 如果文件夹中没有__init__.py文件夹,您不能导入任何内容

我认为importlib.import_module是你在找什么。 (仅适用于Python> = 2.7或3.x):

 importlib.import_module('matplotlib.text') 

花了一些时间试图从列表中导入模块,这是最让我感兴趣的线程 – 但我没有把握___import____的使用 –

所以这里是如何从一个string导入一个模块,并获得相同的行为,只是导入。 并尝试/除了错误的情况下。 🙂

  pipmodules = ['pycurl', 'ansible', 'bad_module_no_beer'] for module in pipmodules: try: # because we want to import using a variable, do it this way module_obj = __import__(module) # create a global object containging our module globals()[module] = module_obj except ImportError: sys.stderr.write("ERROR: missing python module: " + module + "\n") sys.exit(1) 

是的,对于Python 2.7>你有其他的select – 但对于2.6 <,这个工程。