Azure函数:在Linux下的Python函数中,如何导入opencv/imutils等非标准模块?
我正在尝试将在macOS下正常运行的计算机视觉API导出到Azure函数 我尝试使用docker方法: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。要修复它,您需
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