Docker构建Flask镜像安装dlib时提示CMake必须安装如何解决
问题根因
dlib编译安装依赖CMake以及基础编译工具链,你使用的python:3.6.13官方基础镜像默认未预装这些系统级依赖,因此执行pip install安装dlib时构建失败。
解决方案
修改你的Dockerfile,在安装Python依赖前先安装所需的系统依赖,修改后完整配置如下:
FROM python:3.6.13 # 安装dlib编译所需的系统级依赖,同时清理缓存减小镜像体积 RUN apt update && apt install -y --no-install-recommends \ build-essential \ cmake \ && rm -rf /var/lib/apt/lists/* ENV APP_HOME /app WORKDIR $APP_HOME COPY . /app RUN pip install -r requirements.txt # 修正原ENTRYPOINT语法错误,命令和参数需拆分作为独立数组元素 ENTRYPOINT ["python", "app.py"]
额外说明
--no-install-recommends参数和安装后清理apt缓存的操作,可以避免不必要的冗余文件被打包进镜像,适配Heroku对镜像体积的限制规则- 若你的
requirements.txt中已经声明了cmake依赖,仍建议优先通过系统源安装cmake,稳定性更高,也能避免pip安装cmake时可能出现的额外构建问题 - 请提前确认
requirements.txt中声明的dlib版本兼容Python3.6,避免后续出现版本不匹配的运行时错误
内容的提问来源于stack exchange,提问作者tmd13
相关产品推荐
相关产品推荐

