Ошибка развертывания облачной функции Google Python - пакет Madmom pip - PullRequest
2 голосов
/ 04 октября 2019

Я пытаюсь развернуть облачную функцию Google Python3.7 с помощью пакета python pip "madmom", однако указание madmom==0.16.1 в файле require.txt приводит к ошибке развертывания. Когда я удаляю madmom из require.txt, но оставляю другие пакеты pip, облачная функция разворачивается нормально.

madmom pypi: https://pypi.org/project/madmom/

madmom github: https://github.com/CPJKU/madmom

Я развернул функцию из онлайн-редактора Google Cloud Function: https://console.cloud.google.com/functions/add

Я уже развернул облачные функции Python Google, и у меня впервые возникли проблемы. Любая помощь будет принята с благодарностью! Я весь день пытался найти решения в сети и ничего не нашел.

Requirements.txt:

Cython==0.29.12
ffmpeg==1.4
flask==1.0.2
madmom==0.16.1
mido==1.2.9
numpy==1.16.4
scipy==1.3.0
six==1.12.0
urllib3==1.24.2

Ошибка развертывания облачной функции Google:

Ошибка развертывания:

Ошибка сборки: {"error": {"canonicalCode": "INVALID_ARGUMENT", "errorMessage": "pip_download_wheels был вывод stderr: \ nCommand \" python setup.py egg_info \ info"ошибка с кодом ошибки 1 в / tmp / pip-wheel-qjxrm41i / madmom / \ n \ nerror: pip_download_wheels возвращенный код: 1", "errorType": "InternalError", "errorId": "66F138B2"}}

Я искренне благодарен за помощь!

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

Проблема связана с пакетом madmom: он имеет зависимость времени сборки от cython и numpy, но они не объявлены должным образом. Облачные функции (как и большинство сред выполнения) устанавливают все ваши зависимости одновременно, но madmom требуется cython и numpy установлено до того, как может быть установлено, что не настраивается с помощью простого requirements.txt file.

Я сделал PR, чтобы исправить это , он был объединен и, вероятно, будет в следующем выпуске.

Тем временем вы можетеустановите madmom из исходного репозитория, используя следующий файл requirements.txt:

git+https://github.com/CPJKU/madmom.git#egg=madmom
ffmpeg==1.4
flask==1.0.2

(обратите внимание, что вам не следует указывать здесь все под-зависимости ваших зависимостей верхнего уровня (например, * 1021)* и urllib3, если вы фактически не импортируете их в свою облачную функцию)

0 голосов
/ 04 октября 2019

Я пытался просто выполнить pip-установку пакета madmom, и для этого нужен Cython, но когда я пытался установить Cython, он должен использовать тег --user. Тогда madmom также нужен --user.

Тогда как это исправить? Поместите весь свой код (файлы Requeriment.txt и main.py) в папку виртуальной среды с помощью Cloud Shell. Выполните pip install cython --user затем то же самое для madmom, чтобы получить обе папки, поместите их в одну папку с вашим кодом и затем разверните содержимое этой папки с помощью команды

gcloud functions deploy myFunction --trigger-http  --runtime python37
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...