我试图在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
我错过了什么?
谢谢!
3 回答
对于相对进口,您必须:
a)使用相对名称
b)明确提供锚
当然,你也可以做绝对导入:
我认为最好使用
importlib.import_module('.c', __name__)
因为你不需要知道a
和b
.我也想知道,如果你必须使用
importlib.import_module('a.b.c')
,为什么不使用import a.b.c
?并且不要忘记为每个文件夹/子文件夹创建一个
__init__.py
(即使它们是空的)