Функции Azure. В функции Python под Linux как импортировать нестандартный модуль, такой как opencv / imutils? - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь экспортировать API моего компьютерного зрения, который правильно работает в macOS, в функцию Azure.

Я пытался использовать подход докера:

func azure functionapp publish --build-native-deps

но я получаю ошибку:

can't import cv2 and imutils

файл журнала

и

Exception: ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory

Вот требования.txt:

requirements.txt

Как мне решить эту проблему? Или я должен перейти на AWS Lambda?

У меня есть доступ к Куду, если это будет полезно.

Заранее спасибо!

1 Ответ

0 голосов
/ 09 мая 2019

Я думаю, что проблема заключается в отсутствии необходимой библиотеки libgthread. Чтобы исправить это, вам нужно добавить его в файл Docker, чтобы создать собственный образ для развертывания вашей функции.

В Azure следуйте разделу Build the image from the Docker file официального документа Create a function on Linux using a custom image, чтобы добавить приведенный ниже код в azure-functions/python:2.0 файл Docker.

RUN apt-get update && \
    apt-get install -y libglib2.0-dev

Но он добавит новый слой изображения докера, так что вы можете добавить libglib2.0-dev в azure-functions/base:2.0, как показано ниже.

# Line 19
RUN apt-get update && \
    apt-get install -y gnupg wget unzip libglib2.0-dev && \
    wget https://functionscdn.azureedge.net/public/ExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/1.0.0/Microsoft.Azure.Functions.ExtensionBundle.1.0.0.zip && \
    mkdir -p /FuncExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/1.0.0 && \
    unzip /Microsoft.Azure.Functions.ExtensionBundle.1.0.0.zip -d /FuncExtensionBundles/Microsoft.Azure.Functions.ExtensionBundle/1.0.0 && \
    rm -f /Microsoft.Azure.Functions.ExtensionBundle.1.0.0.zip
...