Docker部署Python代码时numpy与其他包版本依赖冲突求助
解决Docker部署Python时的Numpy依赖冲突问题
核心冲突分析
从报错信息看,根本矛盾在于两个包对Numpy的版本要求完全不兼容:
argilla 1.13.2要求numpy < 1.24.0onnxruntime 1.15.1要求numpy >= 1.24.2
你指定的numpy==1.23.5满足前者,但不满足后者,导致pip无法找到兼容的版本组合。
解决方案
方案1:降低onnxruntime版本到兼容Numpy<1.24的版本
onnxruntime 1.14.x系列支持numpy >=1.21.6且<1.24,刚好匹配argilla 1.13.2的要求。修改你的requirements.txt:
numpy==1.23.5 argilla==1.13.2 contourpy==1.1.0 langchain==0.0.200 layoutparser==0.3.4 matplotlib==3.7.1 numexpr==2.8.4 onnxruntime==1.14.3 # 替换为1.14.x版本
方案2:升级argilla到支持Numpy>=1.24的版本
argilla从1.14.0开始将Numpy依赖放宽到numpy <2.0,可以兼容onnxruntime 1.15.1的要求。修改requirements.txt:
numpy==1.24.2 # 或满足>=1.24.2的版本 argilla==1.14.0 # 升级到1.14.0及以上 contourpy==1.1.0 langchain==0.0.200 layoutparser==0.3.4 matplotlib==3.7.1 numexpr==2.8.4 onnxruntime==1.15.1
优化Docker构建(可选)
你的两阶段构建可以调整得更高效,避免复制冗余文件。修改后的Dockerfile示例:
# 构建阶段:安装依赖 FROM python:3.11 as builder WORKDIR /app # 安装编译依赖 RUN apt-get update && apt-get install -y build-essential && rm -rf /var/lib/apt/lists/* # 复制依赖文件并安装 COPY requirements.txt . RUN python -m venv venv ENV PATH="/app/venv/bin:$PATH" RUN pip install --no-cache-dir --upgrade pip RUN pip install --no-cache-dir -r requirements.txt # 复制项目代码 COPY . . # 运行阶段:仅复制必要文件 FROM python:3.11-slim WORKDIR /app # 复制虚拟环境和代码 COPY --from=builder /app/venv ./venv COPY --from=builder /app/test.py ./test.py # 仅复制需要运行的文件,减少镜像体积 # 设置环境变量 ENV PATH="/app/venv/bin:$PATH" # 启动命令 CMD ["python", "./test.py"]
验证步骤
- 修改
requirements.txt为上述任一方案的版本组合 - 重新构建镜像:
docker build -t my-python-app . - 运行容器测试:
docker run my-python-app
内容的提问来源于stack exchange,提问作者user2966197
相关产品推荐
相关产品推荐

