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

43 浏览
0 Comments

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

我试着在 Python 2.7.2 中使用 importlib.import_module,然后遇到了奇怪的错误。

考虑以下目录结构:

    a

|

+ - __init__.py

- b

|

+ - __init__.py

- c.py

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

    import importlib

mod = importlib.import_module(\"c\")

(在实际代码中,\"c\"有一个名称。)

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

    >>> import a.b

Traceback (most recent call last):

File \"\", line 1, in

File \"a/b/__init__.py\", line 3, in

mod = importlib.import_module(\"c\")

File \"/opt/Python-2.7.2/lib/python2.7/importlib/__init__.py\", line 37, in import_module

__import__(name)

ImportError: No module named c

我错过了什么?

谢谢!

admin 更改状态以发布 2023年5月25日
0
0 Comments

我认为最好使用 importlib.import_module('.c', __name__),因为你不需要知道关于 ab 的任何信息。

我也想知道,如果你必须使用 importlib.import_module('a.b.c'),为什么不直接使用 import a.b.c

0
0 Comments

对于相对导入,您必须:

  • a) 使用相对名称
  • b) 显式地提供锚点

    importlib.import_module('.c', 'a.b')
    

当然,您也可以使用绝对导入:

importlib.import_module('a.b.c')

0