【发布时间】:2016-08-21 20:06:25
【问题描述】:
这是我的应用结构:
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 断点并继续,它也可以工作。
我应该可以同时使用绝对和相对导入,对吧?
【问题讨论】:
-
foodo/foodo/foodo.py的运行情况如何?如果您已将目录更改为foodo/foodo/并运行python foodo.py,您将得到您所描述的行为。相反,cd 进入foodo/并运行python -m foodo.foodo,一切都应该按预期工作。 (您可能还需要from __future__ import absolute_imports,因为包和内部模块名称相同。) -
您好,谢谢,是的,future 有效。所以我的选择是使用这个或相对的进口?
-
是的,您也正确的是,重命名内部 foodo 模块可以解决问题,我可以使用绝对导入。谢谢
标签: python python-2.7 python-import importerror