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

在Azure函数中导入python cv2时出错,python,azure,azure-functions,cv2,Python,Azure,Azure Functions,Cv2,我们正在使用Azure CLI部署基于python的Azure函数,但在导入cv2库时出现以下错误 ImportError: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: Fi

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

ImportError: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 *
异常:ImportError:libgthread-2.0.so.0:无法打开共享对象文件:没有这样的文件或目录
堆栈:文件“/usr/local/lib/python3.6/site packages/azure\u functions\u worker/dispatcher.py”,第239行,在\u handle\u function\u load\u请求中
func_请求.元数据.入口点)
文件“/usr/local/lib/python3.6/site packages/azure\u functions\u worker/loader.py”,第66行,在load\u函数中
mod=importlib.import\u模块(fullmodname)
文件“/usr/local/lib/python3.6/importlib/_init__uuu.py”,第126行,在导入模块中
return _bootstrap._gcd_import(名称[级别:],包,级别)
文件“”,第994行,在_gcd_导入中
文件“”,第971行,在_find_和_load中
文件“”,第941行,在“查找”和“加载”中解锁
文件“”,第219行,在“调用”中,删除了“帧”
文件“”,第994行,在_gcd_导入中
文件“”,第971行,在_find_和_load中
文件“”,第955行,在“查找”和“加载”中解锁
文件“”,第665行,在“加载”中
exec_模块中第678行的文件“”
文件“”,第219行,在“调用”中,删除了“帧”
文件“/home/site/wwwroot/FaceFinderHttpTrigger/_init__uuu.py”,第11行,在
进口cv2
文件“/home/site/wwwroot/.python_packages/lib/python3.6/site packages/cv2/_init__.py”,第3行,在
从cv2进口*

有一个类似的SO线程与您的线程具有相同的问题

由于
libgthread
共享库是一个Linux基础库,根据我的经验,这似乎是由Azure CLI无法将这些Python包与本机依赖项打包为Azure函数引起的。因此,我认为唯一的解决方案是按照官方文档所述,自己将Azure函数构建为Docker容器,或者尝试使用Azure CLI命令
func Azure functionapp publish
--build native deps
选项来使用Docker容器自动构建和配置依赖项


正如我所知,有一个博客似乎可以很好地使用opencv for Azure功能,但它只是在本地开发环境中运行,而不是在云上运行。因此,我仍然建议您将应用程序部署为使用本机依赖项的应用程序的Docker contaier。

您可以尝试将
libglib2.0-0
安装到Azure功能沙箱中-这将是一个良好的开端。否则,构建自己的容器映像,并且不依赖于下面的系统libs。若你们只是做一些图像处理,看看你们是否可以用枕头代替。枕头正好在沙箱上工作-参见这里的示例-