我的项目结构如下:
./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.pyapp/models.py文件有以下行:
from app import dbdb在app/__init__.py中定义
db = SQLAlchemy()我从models.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我做错了什么?
发布于 2014-07-28 13:55:17
你有一个圆形进口。
您正在从create_app、db和api中导入manage.py,这会触发app.resources.changesAPI模块的导入,然后app.resources.changesAPI模块将触发app/resources中__init__.py包的导入,然后尝试导入models,这将失败,因为db尚未在app/__init__.py中定义。
您需要将ChangesAPI导入到在app/__init__.py文件中定义db的行后面。app/__init__.py中在from app.resources.changesAPI import ChangesAPI之前定义的任何名称都可供您的子包使用,而后面的名称则不可用。
https://stackoverflow.com/questions/24996646
复制相似问题