一尘不染

如何使用importlib.import_module在Python中导入模块

python

我正在尝试importlib.import_module在Python
2.7.2中使用并遇到奇怪的错误。

考虑以下目录结构:

    一种
    |
    +-__init__.py
      -b
        |
        +-__init__.py
          -c.py

a/b/__init__.py 具有以下代码:

    导入importlib

    mod = importlib.import_module(“ c”)

(在真实代码中"c"有一个名称。)

尝试到时import a.b,产生以下错误:

    >>>导入ab
    追溯(最近一次通话):
      文件“”,第1行,位于 
      在第3行的文件“ a / b / __ init__.py”中 
        mod = importlib.import_module(“ c”)
      import_module中的文件“ /opt/Python-2.7.2/lib/python2.7/importlib/__init__.py”,第37行
        __import __(名称)
    ImportError:没有名为c的模块

我想念什么?

谢谢!


阅读 189

收藏
2020-12-20

共1个答案

一尘不染

对于相对进口,您必须:

  • a)使用相对名称
  • b)明确提供锚点
    importlib.import_module('.c', 'a.b')
    

当然,您也可以只执行绝对导入:

importlib.import_module('a.b.c')
2020-12-20