Python 烧瓶:不能初始化棉花糖

Python 烧瓶:不能初始化棉花糖,python,flask,sqlalchemy,marshmallow,Python,Flask,Sqlalchemy,Marshmallow,我使用Flask、SqlAlchemy和Marshmallow用Python构建RESTAPI 我用pipenv安装了烧瓶sqlalchemy烧瓶棉花糖和棉花糖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==

我使用Flask、SqlAlchemy和Marshmallow用Python构建RESTAPI

我用pipenv安装了烧瓶sqlalchemy烧瓶棉花糖和棉花糖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'
文件“/Users/pro/PycharmProjects/EventPlannerAPI/app.py”,第15行,在
ma=棉花糖(应用程序)
文件“/Users/pro/.local/share/virtualenvs/EventPlannerAPI-OoqXq5gv/lib/python3.7/site packages/flask\u marshmallow/\uuuuuu init\uuuu.py”,第104行,在uuu init中__
self.init_应用程序(应用程序)
文件“/Users/pro/.local/share/virtualenvs/EventPlannerAPI-OoqXq5gv/lib/python3.7/site packages/flask\u marshmallow/\uuuuuu init\uuuuu.py”,第116行,在init\u应用程序中
self.SQLAlchemySchema.OPTIONS\u CLASS.session=db.session
AttributeError:“非类型”对象没有“选项\u类”属性

由于我正在学习一个(1-2年)的教程,我不知道为什么它不起作用,特别是因为在一个类似的项目中,一切都很好。

这是不同版本之间的兼容性问题。应该很快就能修好。

我也有同样的问题。我使用的是Python2.7虚拟环境,当我安装MarshmallowSQLAlchemy时,它默认安装了0.19.0版。在修复过程中,我将其更改为Python3,然后在依赖项中将版本更改为0.23.0。现在它工作得很好。0.19.0版本导致此问题。但我不确定是否还需要更改python版本。

@rfkortekaas我安装了它,但它仍然无法工作。但是棉花糖炼金术和棉花糖炼金术不一样吗?你是对的,我忽略了你已经安装它的细节。安装了哪些版本?@rfkortekaas我对python开发相当陌生,但在pip文件中,有星号(*),因此应该是最新版本运行
pip freeze
以显示已安装的版本versions@rfkortekaas我把它们添加到问题中,感谢我,只有棉花糖sqlalchemy的更新起到了作用。这应标记为已接受的答案