在Python中,导入模块在组织和重用代码方面起着至关重要的作用。但是,当尝试使用 import 函数从字符串变量导入子模块时,可能会出现令人费解的结果。
问题:
考虑以下代码:
import matplotlib.text as text x = dir(text) i = __import__('matplotlib.text') y = dir(i) j = __import__('matplotlib') z = dir(j)
比较三个列表 x、y 和 z 会发现意外的结果差异。具体来说,列表 y 缺少有关 matplotlib.text 子模块中主要类的信息,该子模块存在于列表 x 中。
解决方案:
导入 功能需要仔细理解。通过向 fromlist 参数添加一个空字符串参数,我们可以指定要导入子模块本身:
i = __import__('matplotlib.text', fromlist=[''])
现在,变量 i 将引用 matplotlib.text 子模块,列表 y 将包含想要的信息。
或者,从Python 3.1开始,我们可以使用importlib package:
import importlib i = importlib.import_module("matplotlib.text")
附加说明:
以上是为什么 Python 中的 __import__` 无法完全导入子模块,如何修复?的详细内容。更多信息请关注PHP中文网其他相关文章!