Ubuntu系统更新后Docker Build无法找到TensorFlow 2.12.0求助
问题分析
Docker构建时无法找到tensorflow-cpu==2.12.0,本质原因是:
python:3.7-slim属于滚动标签镜像,系统更新后拉取的新镜像内置了高版本pip,而高版本pip会过滤掉停止维护的Python3.7对应的旧包索引;- TensorFlow后续版本已将
tensorflow-cpu整合到tensorflow主包中,旧版本的tensorflow-cpu在PyPI默认索引中被隐藏。
解决方法
方法1:改用Conda安装指定版本
你已经在构建阶段安装了Miniconda,利用Conda的包仓库(保留旧版本包更稳定)替代pip安装:
# 替换原Dockerfile中出错的pip安装行 RUN conda install -y tensorflow-cpu==2.12.0 && conda clean -afy
方法2:锁定Python基础镜像的固定版本
避免使用python:3.7-slim这种滚动标签,改用Python3.7的最后一个维护版本镜像:
# 修改Build阶段的基础镜像 FROM python:3.7.17-slim-buster AS build
固定镜像后,内部的pip版本、系统环境与之前能正常构建的环境一致,可直接找到旧版本包。
方法3:降级pip后再安装
新版本pip对旧包索引的处理逻辑有变化,先降级到兼容版本再安装TensorFlow:
# 在安装TensorFlow前先降级pip RUN python -m pip install --no-cache-dir pip==23.0.1 && \ python -m pip install --no-cache-dir --no-deps tensorflow-cpu==2.12.0
方法4:直接下载wheel文件安装
从PyPI获取对应Python3.7、x86_64架构的tensorflow-cpu==2.12.0wheel文件,本地安装:
RUN wget https://files.pythonhosted.org/packages/2d/4b/8a5f9b456e428a62f648853173f3a79d49b4121a42182f34b72e4e34d3a0/tensorflow_cpu-2.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl && \ python -m pip install --no-cache-dir tensorflow_cpu-2.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl && \ rm tensorflow_cpu-2.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
内容的提问来源于stack exchange,提问作者gsamaras
相关产品推荐
相关产品推荐

