这是我的应用结构:
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
包中有一个本地 模块foodoo
。 Python 2 中的导入始终首先在当前包中查找名称,然后再查找顶级名称。
重命名 foodoo
包内的 foodoo
模块(消除首先找到本地 foodoo
的可能性)或使用:
from __future__ import absolute_import
在包中模块的顶部以启用 Python-3 样式导入,其中顶级模块是唯一搜索的模块,除非您在名称前加上 .
使名称相对。参见 PEP 328 -- Imports: Multi-Line and Absolute/Relative了解更多详情。
关于python - 绝对导入不起作用,但相对导入起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39068391/