【发布时间】: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