Flask Heroku 部署的 Librosa 安装:“OSError: sndfile library not found”(H10 错误)

Posted

技术标签:

【中文标题】Flask Heroku 部署的 Librosa 安装:“OSError: sndfile library not found”(H10 错误)【英文标题】:Librosa Installation for Flask Heroku Deployment: "OSError: sndfile library not found" (H10 error) 【发布时间】:2021-09-25 22:58:07 【问题描述】:

我正在部署一个使用 librosa 的 Heroku Flask 应用程序,但是当我运行该应用程序时,我收到 H10 错误。我回到日志中得到了这个错误,这可能是 H10 错误的原因:

2021-07-17T13:06:17.447032+00:00 app[web.1]: OSError: sndfile library not found

requirements.txt:

git+https://github.com/CPJKU/madmom.git
ffmpeg==1.4
Flask==1.1.2
Jinja2==2.11.3
librosa==0.8.0
numpy==1.17.5
youtube-dl==2021.4.17
gunicorn==20.1.0

我尝试安装 libsndfile1,尝试使用 conda 安装 librosa,并尝试使用 homebrew 安装 librosa(我在 MacOS 上),但这些方法都没有奏效。

【问题讨论】:

你可以通过编辑问题来粘贴你的 requirements.txt 文件中的内容吗 @charchit requirements.txt 现在有问题 你检查过这个问题***.com/a/57746160/15011621 @charchit 我在您链接的问题中尝试了第一个解决方案,但没有成功,但第二个解决方案删除了​​ OSError: sndfile library not found 消息,所以谢谢您。但是,我的应用程序仍然崩溃,但这一次,它给出了以下错误:ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject 我认为这与 madmom 包有关。您知道解决此错误的方法吗?谢谢! 我有同样的问题,但在我的本地机器上,我按照这个答案,它解决了。 ***.com/a/66066058/15011621 【参考方案1】:

当需要在 Heroku 上自定义 Linux 依赖项时,我建议切换到使用 Docker 而不是 Heroku buildpacks。然后,您可以在本地获得与在服务器上运行相同的环境。这是deploying with Docker 上的官方 Heroku 文档。

要使用 librosa et.c,您可以将 Docker 映像基于官方 Python Docker image。如果您使用 Debian 变体之一,则可以使用 sudo apt-get install -yqq libsndfile1 libsndfile1-dev 安装 sndfile。请注意,这应该在使用 pip 安装 Python 依赖项之前完成。

【讨论】:

以上是关于Flask Heroku 部署的 Librosa 安装:“OSError: sndfile library not found”(H10 错误)的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 部署混乱:Vue.js 前端与 Flask 后端

在 Heroku 上部署 Flask Websockets 应用程序时遇到问题

在已部署的 Flask 应用程序 (Heroku) 上使用 OpenCV

由于 Error=H10,Flask App 在通过 Heroku 部署时导致应用程序错误

无法在 Heroku 上部署 Flask 应用程序 [致命错误:mpfr.h:没有这样的文件或目录]

将 Flask 应用程序部署到 Heroku 时出现奇怪的“is_xhr”错误