烧瓶:无法初始化棉花糖

时间:2020-06-04 17:13:43

标签: python flask sqlalchemy marshmallow

我使用Flask,SqlAlchemy和棉花糖通过Python构建REST API。

我用pipenv安装flask flask-sqlalchemy flask-marshmallow和棉花糖-sqlalchemy,一切正常。

以下是我的依赖版本:

click==7.1.2
Flask==1.1.2
flask-marshmallow==0.12.0
Flask-SQLAlchemy==2.4.3
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
marshmallow==2.21.0
marshmallow-sqlalchemy==0.19.0
six==1.15.0
SQLAlchemy==1.3.17
Werkzeug==1.0.1

现在我运行此代码以运行没有任何方法的基本服务器

from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
import os

# Init app
app = Flask(__name__)
basedir = os.path.abspath(os.path.dirname(__file__))
# Database
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'db.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# Init db
db = SQLAlchemy(app)
# Init ma
ma = Marshmallow(app) # This is where the error appears

# Run Server
if __name__ == '__main__':
    app.run(debug=True)

运行此代码时,出现以下异常:

 File "/Users/pro/PycharmProjects/EventPlannerAPI/app.py", line 15, in <module>
    ma = Marshmallow(app)
  File "/Users/pro/.local/share/virtualenvs/EventPlannerAPI-OoqXq5gv/lib/python3.7/site-packages/flask_marshmallow/__init__.py", line 104, in __init__
    self.init_app(app)
  File "/Users/pro/.local/share/virtualenvs/EventPlannerAPI-OoqXq5gv/lib/python3.7/site-packages/flask_marshmallow/__init__.py", line 116, in init_app
    self.SQLAlchemySchema.OPTIONS_CLASS.session = db.session
AttributeError: 'NoneType' object has no attribute 'OPTIONS_CLASS'

我正在跟踪(1-2岁)的教程,所以我不知道为什么它不起作用,特别是因为在类似的项目中,一切都很好。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我使用的是python 2.7虚拟环境,并且在安装marshmallow-sqlalchemy时,默认情况下安装的版本为0.19.0。在修复过程中,我将其更改为Python 3,然后根据依赖性将版本更改为0.23.0。现在一切正常。 0.19.0版本引起了问题。但是我不确定是否还需要更改python版本。

答案 1 :(得分:0)

这是不同版本之间的兼容性问题。应该尽快修复。