Я получаю OSError: библиотека sndfile не найдена и не удается найти ошибки пакета libsndfile1 при развертывании модели прогнозирования звука на Heroku

Цель состоит в том, чтобы развернуть модель машинного обучения предсказания звука на Heroku, которая использует библиотеку librosa из python.

Файл app.py использует библиотеку librosa для извлечения функций из аудио.

Когда я пытаюсь выполнить развертывание на Heroku, я получаю сообщение об ошибке, как показано ниже.

2020-06-12T03:27:43.099874+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/librosa/core/audio.py", line 10, in <module>
2020-06-12T03:27:43.099875+00:00 app[web.1]:     import soundfile as sf
2020-06-12T03:27:43.099875+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/soundfile.py", line 142, in <module>
2020-06-12T03:27:43.099876+00:00 app[web.1]:     raise OSError('sndfile library not found')
2020-06-12T03:27:43.099876+00:00 app[web.1]: OSError: sndfile library not found
2020-06-12T03:27:43.101008+00:00 app[web.1]: [2020-06-12 03:27:43 +0000] [11] [INFO] Worker exiting (pid: 11)
2020-06-12T03:27:43.255623+00:00 app[web.1]: [2020-06-12 03:27:43 +0000] [4] [INFO] Shutting down: Master
2020-06-12T03:27:43.255725+00:00 app[web.1]: [2020-06-12 03:27:43 +0000] [4] [INFO] Reason: Worker failed to boot.
2020-06-12T03:27:43.333827+00:00 heroku[web.1]: Process exited with status 3
2020-06-12T03:27:43.371190+00:00 heroku[web.1]: State changed from starting to crashed

Вот снимок моих пакетов сборки, которые я использую для установки зависимостей: Список пакетов сборки

Ниже приведен список зависимостей, упомянутых в файле requirements.txt:

Flask==1.1.1
gunicorn==19.9.0
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
Werkzeug==0.15.5
numpy>=1.9.2
scipy>=0.15.1
scikit-learn>=0.18
matplotlib>=1.4.3
pandas>=0.19
librosa==0.7.2
aniso8601==8.0.0
audioread==2.1.5

Я также создал Aptfile для установки libsndfile1. Я связал пакет сборки на Heroku для установки из этого файла Aptfile. Ниже приведен список, упомянутый в моем Aptfile:

libsndfile1
libsndfile-dev
libasound2-dev 
python-dev 
python-numpy 
python-setuptools 

Вот изображение ошибки Невозможно найти пакет libsndfile1 при развертывании на Heroku.

Как преодолеть OSError: библиотека sndfile не найдена и не удается найти ошибки пакета libsndfile1?

Я загрузил все файлы на GitHub здесь для получения дополнительной информации.


Обновление (14.12.2020): я изменил содержимое файлов Aptfile и requirements.txt, и все заработало.

Вот содержимое Aptfile:

libsndfile1
libsndfile-dev
ffmpeg

Вот содержимое Aptfile:

aniso8601==8.0.0
audioread==2.1.8
certifi==2019.11.28
cffi==1.14.0
Click==7.0
decorator==4.4.2
ffmpeg-python==0.2.0
Flask==1.1.1
Flask-RESTful==0.3.8
future==0.18.2
gunicorn==20.0.4
itsdangerous==1.1.0
Jinja2==2.11.1
joblib==0.14.1
librosa==0.7.2
llvmlite==0.31.0
MarkupSafe==1.1.1
marshmallow==3.2.2
numba==0.48.0
numpy==1.18.1
pycparser==2.20
pydub==0.23.1
pytz==2019.3
resampy==0.2.2
scikit-learn==0.22.2.post1
scipy==1.4.1
six==1.14.0
SoundFile==0.10.3.post1
Werkzeug==1.0.0
wincertstore==0.2
pandas==1.0.1
pathlib==1.0.1

person Sughosh Anilkumar Kulkarni    schedule 12.06.2020    source источник


Ответы (1)


Вам необходимо установить sndfile как пакет в вашей операционной системе. В этом ответе описано, как это сделать на Heroku.

person Jon Nordby    schedule 14.06.2020
comment
Спасибо. Решение Криса из этой ссылки сработало для меня. Теперь я получаю другую ошибку под названием ModuleNotFoundError: No module named 'numba.decorators'. Любая помощь по этой ошибке, пожалуйста? - person Sughosh Anilkumar Kulkarni; 15.06.2020
comment
Конечно, см. github.com/librosa/librosa/issues/1160 - person Jon Nordby; 15.06.2020
comment
Спасибо. Я использовал эту ссылку, чтобы добавить numba==0.48 в свой requirements.txt файл. Я получаю то же самое OSError: sndfile library not found Ниже приведен подробный журнал ошибки. 2020-06-15T20:50:33.505234+00:00 app[web.1]: import soundfile as sf 2020-06-15T20:50:33.505234+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/soundfile.py", line 142, in <module> 2020-06-15T20:50:33.505235+00:00 app[web.1]: raise OSError('sndfile library not found') 2020-06-15T20:50:33.505235+00:00 app[web.1]: OSError: sndfile library not found - person Sughosh Anilkumar Kulkarni; 15.06.2020
comment
Похоже, вы отменили исправление с помощью AptFile - person Jon Nordby; 16.06.2020
comment
Спасибо. Я изменил свой apt-файл и файл требований. Я обновил вопрос, что мне помогло. Спасибо за поддержку. Я ценю это. - person Sughosh Anilkumar Kulkarni; 14.12.2020