python - Heroku 无法部署 python Pandas 应用程序
问题描述
伙计们。我最近编写了我的第一个 python Flask 应用程序,这是一个简单的数据处理应用程序,它具有 Pandas 库作为唯一的额外依赖项(除了 Flask 本身)。
它从在线 csv 文件中检索数据,处理它们并在文本中返回一些数字。(我没有使用数据库。它从这些在线文件中获取数据并将结果返回到浏览器屏幕而不存储它。)
我在 conda 环境中构建了它,为此我只添加了 Pandas 和 Flask 库。它在我的本地主机上完美运行。
但现在我很难将它部署到 Heroku ......
首先,我使用 pip 生成了我的Procfile和requirements.txt文件:
pip freeze > requirements.txt
但是,当我尝试部署应用程序时,Heroku 返回一系列与“mkl”依赖项相关的错误。我不确定这些是否与熊猫有关,但在这里它们是什么mkl-service==2.3.0
:mkl_fft==1.3.0
和mkl_random==1.1.1
.
我尝试更改包的版本,选择 Heroku 建议的版本,但它不适用于mkl-service
,Heroku 似乎根本不支持。然后我只是删除了这条线并抓住了机会。我设法在没有错误消息的情况下部署了该应用程序,但是该应用程序没有运行。
我还尝试通过 conda 而不是 pip 生成我的 requirements.txr 文件。
conda list -e requirements.txt
它会生成一个带有“=”运算符而不是“==”的奇怪文件,我通过搜索/替换和删除端盖上的信息进行了更正。这一次,它还包括mkl==2020.2
一个超过 300 MB 的依赖项,它也没有让我的应用程序正常工作。
我想知道我的应用程序的问题是否与我为我的环境混合 conda 和 pip 所做的一些混乱有关。或者可能与让熊猫在线工作有关。我想知道你们中的一些人是否知道出了什么问题。
解决方案
在尝试了几种组合之后,我设法通过创建一个requirements.txt来让应用程序工作,该文件只包含 gunicorn 的名称和我最初在本地环境中安装的包
Flask
pandas
gunicorn
当然,Flask 和 pandas 有它们自己的依赖项,但事实证明 Heroku 会自动安装它们,就像 pip 一样。所以,这一次,让requirements.txt尽可能简单就可以了。
推荐阅读
- android - setRequestedOrientation 后屏幕高度不正确
- autodesk-forge - 从本地文件夹加载 dwg 绘图
- asp.net - IIS 重写/重定向规则
- css - 如何选择具有类的 div 标签内的所有 div 标签?
- xslt - XSLT 在使用调用模板时删除空 xmlns
- python - Django:列不存在
- c# - 使用 EF 从外部表中仅获取最新的插入行
- css - 如何防止元素跳转到div中的新行?
- javascript - 如何删除在我所有的 wordpress 帖子中注入的脚本代码
- asp.net-core - 如何从 ASP.NET Core 的静态文件中排除文件夹?