我有以下项目结构:
./app/__init__.py
./app/main/__init__.py
./app/main/views.py
./app/models.py
./app/resources/__init__.py
./app/resources/changesAPI.py
./config.py
./manage.py
app/models.py
文件包含以下行:
db
在app/__init__.py
中定义
db = SQLAlchemy()
我正在从导入类模型.py来自app/resources/__init__.py
:
from app.models import User, Task, TaskChange, Revision
但是,当模型尝试导入db
时,它将失败:
Traceback (most recent call last):
File "manage.py", line 5, in <module>
from app import create_app, db, api
File "/Users/nahuel/proj/ptcp/app/__init__.py", line 16, in <module>
from app.resources.changesAPI import ChangesAPI
File "/Users/nahuel/proj/ptcp/app/resources/__init__.py", line 5, in <module>
from app.models import User, Task, TaskChange, Revision
File "/Users/nahuel/proj/ptcp/app/models.py", line 1, in <module>
from app import db
ImportError: cannot import name db
我做错什么了?在
你有一个循环导入。在
您正在从},这将触发}中定义,因此失败。在
manage.py
导入create_app
、db
和{app.resources.changesAPI
模块的导入,然后触发导入app/resources
中的__init__.py
包,然后尝试导入您的models
,但由于db
尚未在{您需要将importing
ChangesAPI
移到文件中定义db
的行之后的。在app/__init__.py
中定义的任何名称在from app.resources.changesAPI import ChangesAPI
之前对您的子包可用,后面的名称则不可用。在相关问题 更多 >
编程相关推荐