首页 > 解决方案 > Heroku 无法部署 python Pandas 应用程序

问题描述

伙计们。我最近编写了我的第一个 python Flask 应用程序,这是一个简单的数据处理应用程序,它具有 Pandas 库作为唯一的额外依赖项(除了 Flask 本身)。

它从在线 csv 文件中检索数据,处理它们并在文本中返回一些数字。(我没有使用数据库。它从这些在线文件中获取数据并将结果返回到浏览器屏幕而不存储它。)

我在 conda 环境中构建了它,为此我只添加了 Pandas 和 Flask 库。它在我的本地主机上完美运行。

但现在我很难将它部署到 Heroku ......

首先,我使用 pip 生成了我的Procfilerequirements.txt文件:

pip freeze > requirements.txt

但是,当我尝试部署应用程序时,Heroku 返回一系列与“mkl”依赖项相关的错误。我不确定这些是否与熊猫有关,但在这里它们是什么mkl-service==2.3.0mkl_fft==1.3.0mkl_random==1.1.1.

我尝试更改包的版本,选择 Heroku 建议的版本,但它不适用于mkl-service,Heroku 似乎根本不支持。然后我只是删除了这条线并抓住了机会。我设法在没有错误消息的情况下部署了该应用程序,但是该应用程序没有运行。

我还尝试通过 conda 而不是 pip 生成我的 requirements.txr 文件。

conda list -e requirements.txt

它会生成一个带有“=”运算符而不是“==”的奇怪文件,我通过搜索/替换和删除端盖上的信息进行了更正。这一次,它还包括mkl==2020.2一个超过 300 MB 的依赖项,它也没有让我的应用程序正常工作。

我想知道我的应用程序的问题是否与我为我的环境混合 conda 和 pip 所做的一些混乱有关。或者可能与让熊猫在线工作有关。我想知道你们中的一些人是否知道出了什么问题。

标签: pythonherokuconda

解决方案


在尝试了几种组合之后,我设法通过创建一个requirements.txt来让应用程序工作,该文件只包含 gunicorn 的名称和我最初在本地环境中安装的包

Flask
pandas
gunicorn

当然,Flask 和 pandas 有它们自己的依赖项,但事实证明 Heroku 会自动安装它们,就像 pip 一样。所以,这一次,让requirements.txt尽可能简单就可以了。


推荐阅读