将Python项目部署至Azure App Service遇libgomp.so.1缺失错误求助
解决Azure App Service部署Python项目时的libgomp.so.1缺失问题
问题原因
出现的ImportError: libgomp.so.1: cannot open shared object file: No such file or directory错误,是因为Azure App Service的基础镜像未安装OpenMP运行时库——对应的Debian/Ubuntu系统包为libgomp1,之前安装的libgl1和libglib2.0-0与该依赖无关,因此无法解决问题。
可行解决方案
方案1:修改代码中的安装脚本
将app.py开头添加的脚本替换为安装libgomp1的命令,确保这段代码在所有import语句之前执行:
from subprocess import STDOUT, check_call import os # 更新源并安装libgomp1 check_call(['apt-get', 'update'], stdout=open(os.devnull,'wb'), stderr=STDOUT) check_call(['apt-get', 'install', '-y', 'libgomp1'], stdout=open(os.devnull,'wb'), stderr=STDOUT)
方案2:配置App Service启动命令(推荐)
不建议在代码中嵌入系统命令,更稳妥的方式是通过Azure门户设置启动命令,提前安装依赖:
- 进入你的App Service资源,打开「配置」>「常规设置」
- 在「启动命令」输入框中填入:
apt-get update && apt-get install -y libgomp1 && gunicorn --bind=0.0.0.0 --timeout 600 app:app
如果你的应用使用其他启动方式(比如flask run),替换掉末尾的启动命令即可
方案3:使用自定义Docker镜像(适合多依赖场景)
如果项目存在多个系统级依赖,推荐构建自定义Docker镜像,在Dockerfile中预先安装所需库:
FROM python:3.9-slim # 安装libgomp1及其他必要依赖 RUN apt-get update && apt-get install -y --no-install-recommends libgomp1 \ && rm -rf /var/lib/apt/lists/* # 复制项目文件并安装Python依赖 WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . # 启动应用 CMD ["gunicorn", "--bind=0.0.0.0", "--timeout", "600", "app:app"]
之后将镜像推送到Azure Container Registry,再配置App Service使用该镜像部署。
验证步骤
重新部署项目后,访问你的App Service地址,确认hnswlib能正常导入,错误不再出现。
内容的提问来源于stack exchange,提问作者Harly Chen
相关产品推荐
相关产品推荐

