我正在尝试使用产品和用户以及JWT身份验证来构建CRUD API。当我尝试运行时,它显示错误->“ ImportError:无法导入名称'Item'”,您能帮帮我吗。谢谢
from flask import Flask
from flask_jwt import JWT
from flask_restful import Api
from flask_sqlalchemy import SQLAlchemy
from resources.item import Item, ItemList
from resources.user import UserRegister
from security import authenticate, identity
app = Flask(__name__)
api = Api(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['PROPAGATE_EXCEPTIONS'] = True
app.config['SECRET_KEY'] = 'luciano'
db = SQLAlchemy(app)
@app.before_first_request
def create_tables():
db.create_all()
jwt = JWT(app, authenticate, identity)
api.add_resource(Item, "/item/<string:nome>")
api.add_resource(ItemList, "/items")
api.add_resource(UserRegister, "/register")
if __name__ == '__main__':
from db import db
db.init_app(app)
app.run(debug=True)
在终端中出现以下错误
Traceback (most recent call last):
File "/home/luciano/Documentos/Api/app.py", line 5, in <module>
from resources.item import Item, ItemList
ImportError: cannot import name 'Item'
我的文件夹结构
Api
/models
item.py
user.py
/resources
item.py
user.py
app.py
security.py
答案 0 :(得分:0)
向您的资源和模型目录添加一个空的__init__.py
文件。
答案 1 :(得分:0)
添加目录中缺少的 init .py
为什么需要
除了将目录标记为Python包并定义__all__外,__init__.py还允许您在包级别定义任何变量。如果程序包定义了将以类似于API的方式频繁导入的内容,则这样做通常很方便。这种模式促进了对Pythonic的“扁平优于嵌套”哲学的坚持。
What is __init__.py for? https://docs.python.org/3/tutorial/modules.html