导入Erro Flask框架

时间:2018-10-17 20:00:37

标签: flask flask-sqlalchemy

我正在尝试使用产品和用户以及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

2 个答案:

答案 0 :(得分:0)

向您的资源和模型目录添加一个空的__init__.py文件。

authorization documentation

答案 1 :(得分:0)

添加目录中缺少的 init .py

为什么需要

除了将目录标记为Python包并定义__all__外,__init__.py还允许您在包级别定义任何变量。如果程序包定义了将以类似于API的方式频繁导入的内容,则这样做通常很方便。这种模式促进了对Pythonic的“扁平优于嵌套”哲学的坚持。

What is __init__.py for? https://docs.python.org/3/tutorial/modules.html