Python-从字符串变量导入模块

发布于 2021-02-02 23:18:23

我正在编写有关matplotlib(MPL)嵌套库的文档(个人),该文档与感兴趣的子模块程序包所提供的MPL有所不同。我正在编写Python脚本,希望该脚本可以自动从将来的MPL版本中生成文档。
我选择了感兴趣的子模块/程序包,并希望列出其主要类,然后从中生成列表并进行处理。pydoc

问题是我找不到指示Python从字符串加载子模块的方法。这是我尝试过的示例:

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

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

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

这是通过pprint比较上述列表的三种方式:

我不明白y对象中加载了什么-它是基础对象matplotlib以及其他内容,但是它缺少我想要的信息,而这正是matplotlib.text包中的主要类。这是屏幕截图中最上面的蓝色部分(x列表)

请不要建议Sphinx作为其他方法。

关注者
0
被浏览
75
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    __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你要导入的文件所在的文件夹中没有任何内容,则无法导入任何内容



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看