【发布时间】:2020-07-19 17:42:08
【问题描述】:
我正在开发一个 Flask 应用程序,但我不确定为什么会出现此错误:
File "app.py", line 17, in <module>
from endpoints.users.resource import UserResource
File "{basedir}/endpoints/users/resource.py", line 4, in <module>
from .model import User
File "{basedir}/endpoints/users/model.py", line 1, in <module>
from app import db
File "{basedir}/app.py", line 17, in <module>
from endpoints.users.resource import UserResource
ImportError: cannot import name 'UserResource' from 'endpoints.users.resource' ({basedir}/endpoints/users/resource.py)
我相信这是由于循环依赖,从查看错误开始,但我不知道为什么,因为我认为我在代码中导入内容的顺序应该可以规避这个问题:
app.py:
from flask import Flask
from flask_restful import Api
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
api = Api(app)
api.prefix = '/api'
from endpoints.users.resource import UserResource
api.add_resource(UserResource, '/users')
if __name__ == '__main__':
app.run(host="0.0.0.0")
端点/用户/model.py:
from app import db
class User(db.Model):
# info about the class, requires db
端点/用户/resource.py:
from flask_restful import Resource
from .model import User
from app import db
class UserResource(Resource):
def get(self, username=None):
# get request, requires db and User
在app.py中,由于我是在创建db之后从endpoints.users.resource导入的,那不应该绕过循环依赖吗?
此外,我可以使用flask run 运行它,但是当我尝试使用python app.py 时,它会出现上述错误。为什么这些会给出不同的结果?
【问题讨论】:
标签: python flask model flask-restful