如何导入模块在Python与importlib.import_module如何导入模块在Python

2019-05-14 08:53发布

我试图用importlib.import_module在Python 2.7.2,并运行到奇怪的错误。

请看下面的目录结构:

    a
    |
    + - __init__.py
      - b
        |
        + - __init__.py
          - c.py

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

    import importlib

    mod = importlib.import_module("c")

(在真正的代码"c"都有一个名字。)

试图import ab ,产生以下错误:

    >>> 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

我在想什么?

谢谢!

Answer 1:

对于相对导入,你必须:

  • A)使用相对名称
  • b)向锚明确地

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

当然,你也可以只是做绝对进口替代:

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


Answer 2:

我认为这是更好地使用importlib.import_module('.c', __name__)因为你并不需要了解ab

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



Answer 3:

而且不要忘记创建__init__.py与每个文件夹/子文件夹(即使是空的)



文章来源: How to import a module in Python with importlib.import_module