Azure函数:在Linux下的Python函数中,如何导入opencv/imutils等非标准模块?

Azure函数:在Linux下的Python函数中,如何导入opencv/imutils等非标准模块?,python,azure-functions,opencv-python,Python,Azure Functions,Opencv Python,我正在尝试将在macOS下正常运行的计算机视觉API导出到Azure函数 我尝试使用docker方法: func azure functionapp publish --build-native-deps 但我一直在犯错误: can't import cv2 and imutils 及 以下是requirements.txt: 我如何解决这个问题?或者我必须切换到AWS Lambda 如果有帮助的话,我可以访问库杜 提前谢谢 我认为问题在于缺少必要的库libgthread。要修复它,您需

我正在尝试将在macOS下正常运行的计算机视觉API导出到Azure函数

我尝试使用docker方法:

func azure functionapp publish --build-native-deps
但我一直在犯错误:

can't import cv2 and imutils

以下是requirements.txt:

我如何解决这个问题?或者我必须切换到AWS Lambda

如果有帮助的话,我可以访问库杜


提前谢谢

我认为问题在于缺少必要的库
libgthread
。要修复它,您需要将其添加到Docker文件中,为您的函数部署构建自己的映像

在Azure上,请按照官方文档
的部分,在Linux上使用自定义图像创建函数
,将下面的代码添加到Docker文件中

RUN apt-get update && \
    apt-get install -y libglib2.0-dev
但它将添加一个新的docker图像层,因此您可以像下面这样添加
libglib2.0-dev

# 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

Azure团队已更新默认函数映像以包括libglib2.0-dev

您需要通过pip安装OpenCV的无头版本,而不是默认版本


有时您必须编译cv2才能在本地linux安装程序中工作(两年前RaspberryPi上的OpenCV v3.2.*就是这样。我不知道这是否是您的解决方案。如果我没记错的话,编译IMUTIL也需要这样做。为它预留半到一个工作日(如果您是第一次这样做的话)。这是一个非常好、及时的问题!为什么会被否决?也许它应该更多地关注Azure函数标签方面的问题?@OP请将您的日志和requirements.txt作为ASCII插入,而不是图像-后者更不友好谢谢你。目前我将我的服务转移到AWS lambda,因为它更“python友好”,而不是“预览版本”对于python,它工作得很好。但我肯定会在这个周末尝试。这正是我使用定制docker方法想要做的。这是将“非标准”python模块放入Azure函数中的唯一方法吗?一旦包烘焙到docker映像中,我仍然可以获得“lite”的好处吗在该图像上发布函数,还是必须每次在本地执行Docker构建作为发布的一部分?
# 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