You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apple M1环境下Docker部署Django应用遇TensorFlow模块找不到错误

问题排查:Django Docker容器中找不到TensorFlow模块

问题场景

构建依赖TensorFlow和PostgreSQL的Django应用,使用Docker与docker-compose部署,Dockerfile内容如下:

FROM --platform=linux/amd64 python:3.9-slim-bullseye

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /usr/src/app
RUN python -m pip install --upgrade pip

RUN apt-get update && apt-get install -y --no-install-recommends netcat && \
    apt-get install ffmpeg libsm6 libxext6 build-essential libpq-dev -y &&\
    apt-get autoremove -y && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

RUN pip install tensorflow-aarch64 -f https://tf.kmtea.eu/whl/stable.html
RUN pip install psycopg2-binary --no-binary psycopg2-binary
COPY requirements.txt .
RUN pip install -r requirements.txt

COPY entrypoint.sh /usr/src/entrypoint.sh
ENTRYPOINT ["sh","/usr/src/entrypoint.sh"]
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

运行应用时出现错误:

ModuleNotFoundError: No module named 'tensorflow'

问题原因

  1. 架构不匹配:你使用了--platform=linux/amd64的x86架构Python镜像,却安装了针对ARM64架构的tensorflow-aarch64包。该包无法被x86环境的Python识别为标准tensorflow模块,导致找不到依赖。
  2. 冗余参数问题:psycopg2-binary本身就是预编译二进制包,添加--no-binary psycopg2-binary参数会强制从源码编译,可能引发不必要的编译错误,虽不直接导致TensorFlow问题,但属于不合理配置。

解决方案

1. 修正TensorFlow安装命令

根据镜像架构选择对应包:

  • 若保留linux/amd64架构,替换TensorFlow安装行为官方标准包:
    RUN pip install tensorflow
    
  • 若需ARM64架构,移除--platform=linux/amd64,使用ARM64版本Python镜像,保留tensorflow-aarch64安装命令。

2. 优化psycopg2-binary安装

去掉冗余参数,简化为:

RUN pip install psycopg2-binary

3. (可选)统一依赖管理

建议将TensorFlow和psycopg2-binary加入requirements.txt,避免Dockerfile零散安装导致版本不一致:

# requirements.txt
tensorflow
psycopg2-binary
# 其他依赖...

此时可移除Dockerfile中单独安装这两个包的RUN命令,仅保留RUN pip install -r requirements.txt。

修正后的完整Dockerfile示例

FROM --platform=linux/amd64 python:3.9-slim-bullseye

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /usr/src/app
RUN python -m pip install --upgrade pip

RUN apt-get update && apt-get install -y --no-install-recommends netcat && \
    apt-get install ffmpeg libsm6 libxext6 build-essential libpq-dev -y &&\
    apt-get autoremove -y && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 安装适配amd64架构的TensorFlow
RUN pip install tensorflow
# 简化psycopg2-binary安装命令
RUN pip install psycopg2-binary
COPY requirements.txt .
RUN pip install -r requirements.txt

COPY entrypoint.sh /usr/src/entrypoint.sh
ENTRYPOINT ["sh","/usr/src/entrypoint.sh"]
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

内容的提问来源于stack exchange,提问作者Joseph Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:05:11