Mac M1设备Docker容器内pip安装Tensorflow 2.6.2找不到版本如何解决
M1 Mac 构建含TensorFlow 2.6.2的Docker镜像失败解决方案
问题根源
- 官方TensorFlow 2.6.2仅发布了x86架构的Linux/Windows/macOS安装包,没有适配arm64架构的Linux版本安装包
- M1芯片默认Docker运行arm64架构容器,pip安装时找不到对应架构的安装包;使用qemu模拟x86架构运行时,低版本TensorFlow依赖的底层编译组件和模拟环境存在兼容性冲突,也会安装失败
可行解决方法
方法1:指定容器运行架构为x86_64,使用conda安装兼容版本
修改Dockerfile,使用miniconda基础镜像替代原生python镜像,conda源有适配模拟x86环境的TensorFlow 2.6.2包:
# 指定以x86_64架构运行基础镜像 FROM --platform=linux/amd64 continuumio/miniconda3:latest # 安装python 3.9对应环境 RUN conda install -y python=3.9 \ && conda install -y tensorflow==2.6.2 \ && pip install --upgrade pip
构建时不需要额外加架构参数,镜像会自动以x86模拟模式运行。
方法2:使用arm64适配的第三方TensorFlow源
如果需要容器跑原生arm64架构提升性能,可以改用社区适配的arm64版TensorFlow安装源:
FROM python:3.9 RUN python -m pip install --upgrade pip # 安装arm64架构适配的TensorFlow 2.6兼容版本 RUN pip install tensorflow-macos==2.6.0 tensorflow-metal==0.2.0
注意:该方案安装的是macOS适配的TensorFlow版本,仅适用于容器运行在MacOS环境的场景,如果需要部署到Linux x86服务器不要用这个方案。
方法3:升级TensorFlow版本到支持arm64的版本
如果项目可以兼容更高版本的TensorFlow,直接把版本号升到2.8.0及以上,官方2.8及之后的版本已经提供了arm64架构的Linux安装包,修改Dockerfile对应行即可:
RUN pip install tensorflow==2.8.0
这个方案构建的镜像可以同时兼容x86和arm64架构,不需要额外配置。
内容的提问来源于stack exchange,提问作者Augusto Acioli Pinho Vanderley
相关产品推荐
相关产品推荐

