在 azure app 服务上运行 python dlib 库

Posted

技术标签:

【中文标题】在 azure app 服务上运行 python dlib 库【英文标题】:Run python dlib library on azure app service 【发布时间】:2021-08-29 14:30:13 【问题描述】:

我已经为 Python 3.4 创建了一个 azure 应用服务,并使用这个 https://bootstrap.pypa.io/get-pip.py 脚本在那里安装了 pip。一切正常,除非我尝试执行 pip install dlib 库时发生异常: RuntimeError: CMake must be installed to build the following extensions: dlib

有没有办法在运行这个应用服务的机器上安装Cmake

【问题讨论】:

您可以投入大量时间来完成这项工作,或者您可以切换到应用服务 Linux 并为您的应用构建一个 Dockerfile,并安装所有 pips - @987654322 @ @Jay,不可或缺。再次感谢您的关心,您上次帮助了我很多。我尝试使用来自 docker hub (hub.docker.com/r/adriaalcala/python3-dlib/tags) 的带有 dlib 和 python3 的公共 docker 文件之一部署 linux web 应用程序 (demostandzerobit.scm.azurewebsites.net),但是当我尝试打开地址时,该应用程序返回 internal server error。我对 docker 没有任何经验,并假设我需要以某种方式对其进行修改,因此它以某种方式在正确的端口上运行 Web 服务器。你知道一个很好的教程吗? 【参考方案1】:

这是对我有用的解决方案:

步骤 0. 在 app.py 文件中创建 Flask 应用程序,例如:

from flask import Flask
import dlib
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'This server is running dlib version: '.format(dlib.__version__)

if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0')

步骤 1. 在同一个文件夹中使用 Python、cmake 和 dlib 构建一个 Docker 文件(我选择了 Python 3)。这是 Dockerfile:

FROM ubuntu:latest
MAINTAINER Ilya Pukhov "ilya.pukhov@gmail.com"
RUN apt-get update -y
RUN apt-get install -y python3-pip \
    python3-dev \
    build-essential \
    cmake
COPY . /app
WORKDIR /app
RUN pip3 install flask
RUN pip3 install dlib
ENTRYPOINT ["python3"]
CMD ["app.py"]

这是 Docker Hub 上的现成文件https://hub.docker.com/r/garinthengineer/dlib-test-2/

步骤 2. 在 azure 的 Linux 上创建 Web 应用程序,确保将 WEBSITES_PORT 变量设置为 Flask 服务器正在侦听的端口号(默认为 5000)并将 docker 文件连接到它。您可以使用上一点中的 Docker Hub 链接。这是该步骤的教程https://docs.microsoft.com/en-us/azure/app-service/containers/tutorial-custom-docker-image#change-web-app-and-redeploy

利润。

【讨论】:

最终这样做了。尽管完全了解容器的好处,但我并不喜欢它,因为在我的特殊情况下,所有其他应用程序都在标准应用程序服务上运行并受益于扩展库,例如 let's encrypt。 @Turowicz 但是如何在应用服务上安装 dlib?通过 *.whl 文件? 我在虚拟机上运行它,因为应用服务机器没有 GPU。

以上是关于在 azure app 服务上运行 python dlib 库的主要内容,如果未能解决你的问题,请参考以下文章

在运行 azure app 服务时更改连接字符串

需要修复在Azure App服务上运行的Angular 2的路由问题

哪个是基于NodeJS的Azure Web App(Linux)上运行的默认Web服务器?

为在 Azure App Service Linux 上运行的容器创建卷

Laravel:运行队列:在 Windows Azure Web App 上连续监听

如何在 Azure 应用服务上运行使用 ts-node 开发的节点应用程序