python - 在Azure函数中导入python cv2时出错

标签 python azure azure-functions opencv

我们正在使用 Azure CLI 部署基于 Python 的 Azure Function,但在导入 cv2 库时出现以下错误。

导入错误:libgthread-2.0.so.0:无法打开共享对象文件:没有这样的文件或目录

我们没有使用任何 docker 镜像。更喜欢基于非 Docker 的解决方案。

Exception: ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory
Stack:   File "/usr/local/lib/python3.6/site-packages/azure_functions_worker/dispatcher.py", line 239, in _handle__function_load_request
    func_request.metadata.entry_point)
  File "/usr/local/lib/python3.6/site-packages/azure_functions_worker/loader.py", line 66, in load_function
    mod = importlib.import_module(fullmodname)
  File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/site/wwwroot/FaceFinderHttpTrigger/__init__.py", line 11, in <module>
    import cv2
  File "/home/site/wwwroot/.python_packages/lib/python3.6/site-packages/cv2/__init__.py", line 3, in <module>
    from .cv2 import *

最佳答案

有一个类似的SO线程Azure Functions: In a Python function under Linux, how do I import a non-standard module such as opencv/imutils?与你有同样的问题。

由于libgthread共享库是一个Linux基础库,根据我的经验,这似乎是由于Azure CLI无法将这些具有 native 依赖项的Python包打包为Azure Function造成的。所以我认为唯一的解决方案就是自己将你的Azure Function构建为Docker容器,如官方文档Create a function on Linux using a custom image或者尝试使用 Azure CLI 命令 func azure functionapppublish--build-native-deps 选项来使用 Docker 容器自动构建和配置依赖项。

据我所知,有一个博客 OPENCV WITH AZURE FUNCTIONS这似乎与 Azure Functions 的 opencv 配合得很好,但据我看来,它只是在本地开发环境上运行,而不是在云上运行。因此,我仍然建议您使用 native 依赖项将应用程序部署为应用程序的 Docker 容器。

关于python - 在Azure函数中导入python cv2时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57774413/

相关文章:

azure - 使用其 REST API 将 Azure DevOps 指标获取到 Elasticsearch 数据库中?

azure - 如何在azure存储帐户中创建子文件夹并使用azure功能应用程序复制文件

Python:Scipy.optimize Levenberg-marquardt 方法

python - 艰难地学习 Python,练习 35 : placing a regular expression

python - 如何使用正则表达式读取访问日志主机?

azure - 在 Azure Front Door 后端实例之间同步内存数据

python - 如何根据另外两个给定图像对图像进行分类

authentication - 将 Azure ACS 颁发的 token 传递给 PhoneGap 客户端

c# - 绑定(bind) CosmosDB 本地函数

azure - 在 Azure Function 中找不到注释 System.ComponentModel.Annotations