gpt4 book ai didi

python - 使用 "__import__"从字符串变量导入模块给出的结果与普通导入语句不同

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:01 28 4
gpt4 key购买 nike

我正在为嵌套 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 对上述列表进行 3 种比较:

enter image description here

我不明白 y 对象中加载了什么 - 它是基础 matplotlib 加上其他东西,但它缺少我想要的信息,即来自 的主类>matplotlib.text 包。它是屏幕截图中顶部的蓝色部分(x 列表)。

最佳答案

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

如果你改变

i = __import__('matplotlib.text')

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

然后i将引用matplotlib.text

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

import importlib

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

一些笔记

  • 如果您尝试从子文件夹导入某些内容,例如./feature/email.py,代码将类似于 importlib.import_module("feature.email")

  • 在 Python 3.3 之前,如果您尝试导入的文件所在的文件夹中没有 __init__.py,则您无法导入任何内容(在决定是否要保留之前请参阅 caveats)用于向后兼容的文件,例如与 pytest)。

关于python - 使用 "__import__"从字符串变量导入模块给出的结果与普通导入语句不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55544831/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com