我创建了自己的Django应用程序,其目录结构为
/appname
__init__.py
models.py
/submodule1
__init__.py
a.py
在a.py
内我有以下导入
from ..models import Something
如果我的/appname
文件夹中有/djangoproject
,但是当我将应用程序安装到Python的网站包(通过我创建的setup.py
)时,这可以正常工作并且a.py
无法再导入Something
,并出现以下错误:
ImportError: cannot import name Something
这是setup.py:
from distutils.core import setup
setup(name='appname',
version='0.1',
packages=['appname', 'appname.contrib'],
)
答案 0 :(得分:8)
事实证明这是一个循环导入错误。 models.py
正在导入a.py
,而a.py
正在导入models.py
。
打破这个圈子解决了导入问题,但现在是时候弄清楚如何在Python中进行延迟评估了: - )
答案 1 :(得分:2)
将名为__init__.py
的空文件放在/ submodule1中,以便Python可以将其解析为模块。它应该有所帮助。在/ appname中相同 - 还应该有__init__.py
个文件