Как импортировать модуль в Python с помощью importlib.import_module
Я пытаюсь использовать 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
Что мне не хватает?
Спасибо!
Ответы
Ответ 1
Для относительного импорта вам необходимо:
Конечно, вы могли бы просто сделать абсолютный импорт вместо этого:
importlib.import_module('a.b.c')
Ответ 2
Я думаю, что лучше использовать importlib.import_module('.c', __name__)
, так как вам не нужно знать о a
и b
.
Мне также интересно, что если вам нужно использовать importlib.import_module('a.b.c')
, почему бы просто не использовать import a.b.c
?
Ответ 3
И не забудьте создать __init__.py
с каждой папкой/подпапкой (даже если они пусты)