Как импортировать модуль в Python с помощью importlib.import_module

Я пытаюсь использоватьimportlib.import_module в Python 2.7.2 и наткнуться на странную ошибку.

Рассмотрим следующую структуру dir:

    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

Что мне не хватает?

Спасибо!

Ответы на вопрос(3)

Решение Вопроса

a) use relative name

b) provide anchor explicitly

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

Конечно, вместо этого вы можете просто выполнить абсолютный импорт:

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

__init__.py с каждой папкой / подпапкой (даже если они пусты)

 31 июл. 2017 г., 13:17
Спасибо! Это решило мою проблему!

importlib.import_module('.c', __name__) так как вам не нужно знать оa а такжеb.

Мне также интересно, если вы должны использоватьimportlib.import_module('a.b.c')почему бы просто не использоватьimport a.b.c?

 01 нояб. 2015 г., 10:45
Это полезно, когда имя модуля является переменной.

Ваш ответ на вопрос