Django 导入错误

10 投票
2 回答
17021 浏览
提问于 2025-04-16 23:51

我创建了自己的Django应用,目录结构如下:

/appname
    __init__.py
    models.py
    /submodule1
        __init__.py
        a.py

a.py文件里,我有以下的导入语句:

from ..models import Something

如果我的/appname文件夹在/djangoproject文件夹里,这样是可以正常工作的。但是当我通过自己写的setup.py把这个应用安装到Python的site-packages目录时,就出现了问题,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'],
)

2 个回答

3

在 /submodule1 文件夹里放一个空文件,名字叫 __init__.py,这样 Python 就能把它当作一个模块来识别。这应该会有帮助。在 /appname 文件夹里也要放一个 __init__.py 文件。

11

结果发现这是一个循环导入错误。也就是说,models.py 文件在引入 a.py 文件,而 a.py 文件又在引入 models.py 文件。

打破这个循环后,导入的问题就解决了,但现在是时候弄清楚如何在 Python 中实现懒惰计算了 :-)

撰写回答