绝对导入不起作用,但相对导入起作用
Absolute Import Not Working, But Relative Import Does
这是我的应用程序结构:
foodo/
setup.py
foodo/
__init__.py
foodo.py
models.py
foodo/foodo/foodo.py
从 models.py
模块导入 类:
from foodo.models import User
抛出 ImportError
:
ImportError: No module named models
但是,如果我使用相对导入,它确实有效:
from models import User
如果我在导入之前放置一个 pdb 断点并继续,它也可以工作。
我应该可以同时使用绝对导入和相对导入,对吗?
您在 foodoo
包中有一个 local 模块 foodoo
。在 Python 2 中导入总是先在当前包中查找名称,然后再查找顶级名称。
重命名 foodoo
包内的 foodoo
模块(消除首先找到本地 foodoo
的可能性)或使用:
from __future__ import absolute_import
在包中模块的顶部以启用 Python-3 样式导入,其中顶级模块是唯一搜索的模块,除非您在名称前加上 .
以创建名亲。有关详细信息,请参阅 PEP 328 -- Imports: Multi-Line and Absolute/Relative。
这是我的应用程序结构:
foodo/
setup.py
foodo/
__init__.py
foodo.py
models.py
foodo/foodo/foodo.py
从 models.py
模块导入 类:
from foodo.models import User
抛出 ImportError
:
ImportError: No module named models
但是,如果我使用相对导入,它确实有效:
from models import User
如果我在导入之前放置一个 pdb 断点并继续,它也可以工作。
我应该可以同时使用绝对导入和相对导入,对吗?
您在 foodoo
包中有一个 local 模块 foodoo
。在 Python 2 中导入总是先在当前包中查找名称,然后再查找顶级名称。
重命名 foodoo
包内的 foodoo
模块(消除首先找到本地 foodoo
的可能性)或使用:
from __future__ import absolute_import
在包中模块的顶部以启用 Python-3 样式导入,其中顶级模块是唯一搜索的模块,除非您在名称前加上 .
以创建名亲。有关详细信息,请参阅 PEP 328 -- Imports: Multi-Line and Absolute/Relative。