在 Azure 函数中导入 python cv2 时出错
Error while importing python cv2 in Azure function
我们正在使用 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 *
有一个类似的 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 无法打包这些 Python 具有本机依赖项的包造成的作为 Azure 函数。因此,我认为唯一的解决方案是按照官方文档 Create a function on Linux using a custom image
所说,自己将 Azure Function 构建为 Docker 容器,或者尝试使用 Azure CLI 命令 func azure functionapp publish
和 --build-native-deps
选项使用 Docker 容器自动构建和配置依赖项。
据我所知,有一个博客 OPENCV WITH AZURE FUNCTIONS
似乎可以很好地与 opencv for Azure Functions 一起使用,但它只是 运行 在本地开发环境中,而不是在云中,我认为.所以我仍然建议您将您的应用程序部署为使用本机依赖项的应用程序的 Docker 容器。
我们正在使用 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 *
有一个类似的 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 无法打包这些 Python 具有本机依赖项的包造成的作为 Azure 函数。因此,我认为唯一的解决方案是按照官方文档 Create a function on Linux using a custom image
所说,自己将 Azure Function 构建为 Docker 容器,或者尝试使用 Azure CLI 命令 func azure functionapp publish
和 --build-native-deps
选项使用 Docker 容器自动构建和配置依赖项。
据我所知,有一个博客 OPENCV WITH AZURE FUNCTIONS
似乎可以很好地与 opencv for Azure Functions 一起使用,但它只是 运行 在本地开发环境中,而不是在云中,我认为.所以我仍然建议您将您的应用程序部署为使用本机依赖项的应用程序的 Docker 容器。