【问题标题】:Error in Heroku with Flask App and sqlalchemy使用 Flask App 和 sqlalchemy 在 Heroku 中出错
【发布时间】:2021-04-16 18:58:26
【问题描述】:

我有一个使用 Flask 用 Python 编写的应用程序,我正在使用 Heroku 进行部署。我在构建后遇到了一个问题,控制台给了我很多错误行,但对我来说主要是:

ImportError: cannot import name 'Binary' from 'sqlalchemy' (/app/.heroku/python/lib/python3.8/site-packages/sqlalchemy/__init__.py)

相关文件开头为:

from flask_login import UserMixin
from sqlalchemy import Binary, Column, Integer, String
from app import db, login_manager

我的 requirements.txt 文件如下:

flask
sqlalchemy
flask_login
flask_migrate
flask_wtf
flask-sqlalchemy
email_validator
python-decouple
gunicorn
fiona
pyproj
rtree
shapely
geopandas
plotly
matplotlib
tqdm

我无法理解起源,主要是考虑到:

  • 该应用程序在我的计算机上运行良好(但它在 conda env 中运行,而不是在 pip 中运行)
  • 前几天应用还不错,此后与 SQL 相关的一切都没有改变

有人知道它可能来自哪里吗?

谢谢!

【问题讨论】:

  • 您在计算机上安装的是哪个版本的 sqlalchemy,而 Heroku 安装的是哪个版本的 sqlalchemy?您的需求文件没有指定任何特定版本,因此您和 Heroku 可能使用不同版本的 sqlalchemy,并且在您的版本中,您可以从 sqlalchemy 导入 Binary,但在另一个版本中它可能在其他地方。
  • 我使用的是 2.5.1,所以我将 sqlalchemy>=2.5 添加到我的需求文件中。但是为什么 Heroku 不通过 pip 安装最新版本呢?但是,当再次尝试使用该配置时,它仍然无法正常工作......
  • 我认为 SQLAlchemy 的最新版本是 1.4.8,我会再次检查版本控制。固定到一个确切的版本总是好的,以避免 pip(或 conda)安装在版本之间有重大变化的东西。一个重大更改的示例可能是在模块本身内重新定位二进制类型。尝试找出在本地运行的版本并使用 sqlalchemy==1.4.8 或其他任何版本。 (当前sqlalchemy版本来源:sqlalchemy.org/download.html#current
  • 是的,抱歉,我查看了 flask-sqlalchemy。 sqlalchemy 是 1.3.23 并且指定版本运行良好!谢谢!!

标签: python flask heroku sqlalchemy


【解决方案1】:

为了后代,我通过在我的需求文件中更精确地解决了这个问题,如下所示:

flask
sqlalchemy==1.3.23
flask_login
flask_migrate
flask_wtf
flask-sqlalchemy>=2.5
email_validator
python-decouple
gunicorn
fiona
pyproj
rtree
shapely
geopandas
plotly
matplotlib
tqdm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-24
    • 2020-06-16
    • 2015-03-25
    • 1970-01-01
    • 2019-07-13
    • 2020-05-17
    • 2019-03-28
    • 2021-04-29
    相关资源
    最近更新 更多