运行 Python + OpenCV + Azure Functions 中的 dlib
Run Python + OpenCV + dlib in Azure Functions
我在 Python
中创建了一个图像处理脚本(使用 dlib
和 OpenCV
)- 我想知道如何将此功能引入 Azure Functions,以便脚本可以通过 API 调用。由于 Python
仍处于 Azure Functions
的预览阶段,我想知道这里是否有人有将模块引入 Azure Functions
的经验,是否可以在那里安装 OpenCV
?
所以我想到了一个肮脏的 hack,它将在第一个 运行 上安装包并抛出错误,因此该功能将重新启动。请按照以下步骤操作:
- 上传包到函数目录(我只是把包添加到函数同步到的git项目中)。
做类似的事情(可能有更好的方法,但我真的是 python 的新手):
try:
import pyodbc
except:
package = 'pyodbc-3.0.10-cp27-none-win32.whl'
pip.main(['install', '--user', package])
raise ImportError('Restarting')
所以 --user 背后的原因是它不会让我以管理员权限安装它...此外,如果您确实将 requirements.txt 包含在 git 存储库中,则软件包是安装到 WebApp,但 Function 似乎有自己的 python 环境,因此您必须手动安装包。
所以唯一真正的技巧是找到合适的 wheel 包(我坚信 Function 使用的是 Python 2.7,我无法让它与 Python 3.4 的包一起使用)
您可以将自己的模块上传到与您的函数位于同一文件夹中的 lib
文件夹,从而将它们引入您的函数。
但是,在 OpenCV 的上下文中,目前它不是受支持的场景。 Azure Function 环境中使用的默认 Python 版本是 Python 2.7。如果您尝试使用 OpenCV 为 Python 2.7 执行函数代码,您将收到的错误消息类似于以下内容,
2016-11-07T20:47:33.151 Function completed (Failure, Id=42fa9d38-05f1-46d4-a8ce-9fbaa24a870d)
2016-11-07T20:47:33.166 Exception while executing function: Functions.ImageProcessor. Microsoft.Azure.WebJobs.Script: ImportError: numpy.core.multiarray failed to import
Traceback (most recent call last):
File "D:\home\site\wwwroot\ImageProcessor\run.py", line 17, in <module>
import cv2
ImportError: numpy.core.multiarray failed to import
解决此问题的方法是更新 Python 2.7
使用的 numpy
版本,但您将无法 运行 自己进行更新。
如您所述,Python Azure Functions 的语言支持目前处于试验阶段。当 Python 作为第一种 class 语言完全上线时,这些问题将得到解决。
我在 Python
中创建了一个图像处理脚本(使用 dlib
和 OpenCV
)- 我想知道如何将此功能引入 Azure Functions,以便脚本可以通过 API 调用。由于 Python
仍处于 Azure Functions
的预览阶段,我想知道这里是否有人有将模块引入 Azure Functions
的经验,是否可以在那里安装 OpenCV
?
所以我想到了一个肮脏的 hack,它将在第一个 运行 上安装包并抛出错误,因此该功能将重新启动。请按照以下步骤操作:
- 上传包到函数目录(我只是把包添加到函数同步到的git项目中)。
做类似的事情(可能有更好的方法,但我真的是 python 的新手):
try: import pyodbc except: package = 'pyodbc-3.0.10-cp27-none-win32.whl' pip.main(['install', '--user', package]) raise ImportError('Restarting')
所以 --user 背后的原因是它不会让我以管理员权限安装它...此外,如果您确实将 requirements.txt 包含在 git 存储库中,则软件包是安装到 WebApp,但 Function 似乎有自己的 python 环境,因此您必须手动安装包。
所以唯一真正的技巧是找到合适的 wheel 包(我坚信 Function 使用的是 Python 2.7,我无法让它与 Python 3.4 的包一起使用)
您可以将自己的模块上传到与您的函数位于同一文件夹中的 lib
文件夹,从而将它们引入您的函数。
但是,在 OpenCV 的上下文中,目前它不是受支持的场景。 Azure Function 环境中使用的默认 Python 版本是 Python 2.7。如果您尝试使用 OpenCV 为 Python 2.7 执行函数代码,您将收到的错误消息类似于以下内容,
2016-11-07T20:47:33.151 Function completed (Failure, Id=42fa9d38-05f1-46d4-a8ce-9fbaa24a870d)
2016-11-07T20:47:33.166 Exception while executing function: Functions.ImageProcessor. Microsoft.Azure.WebJobs.Script: ImportError: numpy.core.multiarray failed to import
Traceback (most recent call last):
File "D:\home\site\wwwroot\ImageProcessor\run.py", line 17, in <module>
import cv2
ImportError: numpy.core.multiarray failed to import
解决此问题的方法是更新 Python 2.7
使用的 numpy
版本,但您将无法 运行 自己进行更新。
如您所述,Python Azure Functions 的语言支持目前处于试验阶段。当 Python 作为第一种 class 语言完全上线时,这些问题将得到解决。