我在Django网站上导入了一个名为shared
的我的软件包。此软件包是一个已安装的应用程序,但是当我尝试使用它访问其models
模块时,会抛出以下异常:
AttributeError: 'module' object has no attribute 'models'
我对此感到疯狂!其余的包以相同的方式导入,并且不会导致任何问题。此程序包包含__init__.py
。
例如,在最简单的情况下,它也会失败并出现相同的错误:
import shared
print shared.models
如果我使用from shared.models import Foo
它可行,但我尝试这样做是为了避免循环依赖。
有人对此有任何想法吗?
答案 0 :(得分:1)
问题是import shared
不导入子模块,但from shared.models import FOO
确实导入了所有父模块。您可以在__init__.py中导入模型,以便它与import shared
一起导入,或者您可以在导入共享后专门导入shared.models。
shared/__init__.py:
import models
import shared
print shared.models.FOO
或
import shared
import shared.models
print shared.models.FOO