【问题标题】:Flask SQLAlchemy can't set attribute error in a venv [duplicate]Flask SQLAlchemy 无法在 venv 中设置属性错误 [重复]
【发布时间】:2021-06-14 08:29:05
【问题描述】:

我正在学习使用 Flask-SQLAlchemy 的身份验证功能,因此构建了非常基本的应用程序,用户(属性:姓名、电子邮件和密码)能够注册和登录,被重定向到虚拟个人资料页面,以及而已。令人费解的行为是,如果我使用虚拟环境,我完成的教程将无法完成。

要显示此行为,请关注this digital ocean tutorial。在第 6 步,我们有:

>>> from project import db, create_app
>>> db.create_all(app=create_app())

如果我激活了auth 环境(如教程所述),我会收到以下错误消息:

/.../flask_auth_app/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py:833: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True or False to suppress this warning.
  warnings.warn(FSADeprecationWarning(
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/.../flask_auth_app/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 1039, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/.../flask_auth_app/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 1031, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), **extra)
  File "/.../flask_auth_app/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 962, in get_engine
    return connector.get_engine()
  File "/.../flask_auth_app/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 555, in get_engine
    options = self.get_options(sa_url, echo)
  File "/.../flask_auth_app/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 570, in get_options
    self._sa.apply_driver_hacks(self._app, sa_url, options)
  File "/.../flask_auth_app/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 914, in apply_driver_hacks
    sa_url.database = os.path.join(app.root_path, sa_url.database)
AttributeError: can't set attribute

如果我在localhost 上运行应用程序时尝试注册新用户,我会收到同样的错误 - 也就是说,如果我没有运行虚拟环境,我只能成功注册新用户,以便应用从已安装包的全局版本中读取。

如果我在运行 python3 之前停用环境,此错误就会消失。如果我关注this tutorial,我将得到相同的行为,示例代码给出here

软件包版本

这在venv~/miniconda3/lib/python3.8/site-packages 中是相同的。我使用的是 MacOS Big Sur v11.2.3。

Flask==1.1.2
Flask-Login==0.5.0
Flask-SQLAlchemy==2.4.4
SQLAlchemy==1.4.0

【问题讨论】:

    标签: python flask sqlalchemy


    【解决方案1】:

    我最近遇到了同样的错误消息。这实际上是由于 SQLAlchemy 的升级,它作为 flask-sqlalchemy 的依赖项安装。

    你可以找到我在stackoverflow上发布的问题here

    通过卸载 SQLAlchemy==1.4.0 并安装以前版本的 SQLAlchemy==1.3.23,问题得到解决。

    尝试在您的虚拟环境中执行此操作,看看是否有帮助。

    【讨论】:

      猜你喜欢
      • 2021-06-14
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 2017-07-17
      • 2021-06-13
      相关资源
      最近更新 更多