基于alpine:3.7的Docker镜像(Python3)安装TensorFlow-1.2.1失败求助
嘿,我来帮你搞定这个问题!你遇到的「No matching distribution found for tensorflow」错误,核心原因是TensorFlow 1.2.1官方没有提供适配Alpine Linux所用的musl libc的预编译包——Alpine默认用musl而不是常见的glibc,而早期TensorFlow只针对glibc环境发布wheel包,pip自然找不到对应的版本。
下面给你几个可行的解决方案,按操作复杂度从低到高排序:
解决方案
方案1:改用基于glibc的基础镜像(最简单快捷)
如果不是必须死守Alpine 3.7,建议换成Ubuntu 16.04或者Debian Stretch这类基于glibc的镜像,TensorFlow 1.2.1对这些环境有官方支持,安装会顺畅很多。修改后的Dockerfile示例:
FROM ubuntu:16.04 RUN apt-get update && apt-get install -y python3 python3-pip RUN pip3 install tensorflow==1.2.1 # 你的其他后续指令...
这样执行docker build应该就能一次性成功安装。
方案2:在Alpine 3.7中手动编译TensorFlow 1.2.1(适合必须用Alpine的场景)
手动编译步骤繁琐,但能满足你用Alpine的需求,不过要做好耗时准备(编译过程会占用大量资源):
- 先在Dockerfile中安装所有编译依赖:
FROM alpine:3.7 RUN apk add --no-cache python3 python3-dev gcc g++ make cmake git openjdk8-jre # 安装TensorFlow 1.2.1要求的特定版本Bazel(0.4.5) RUN wget https://github.com/bazelbuild/bazel/releases/download/0.4.5/bazel-0.4.5-installer-linux-x86_64.sh && \ chmod +x bazel-0.4.5-installer-linux-x86_64.sh && \ ./bazel-0.4.5-installer-linux-x86_64.sh && \ rm bazel-0.4.5-installer-linux-x86_64.sh
- 克隆TensorFlow 1.2.1源码并切换到对应版本:
RUN git clone https://github.com/tensorflow/tensorflow.git && cd tensorflow && git checkout v1.2.1
- 配置编译参数(按提示输入对应选项,这里用EOF自动填充):
RUN cd tensorflow && \ ./configure <<EOF /usr/bin/python3 /usr/include/python3.6m no no no no no EOF
- 编译生成wheel包并安装:
RUN cd tensorflow && bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package RUN cd tensorflow && bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg RUN pip3 install /tmp/tensorflow_pkg/tensorflow-1.2.1-*.whl
注意:编译时要给Docker分配足够的内存和CPU,否则很容易中途失败。
方案3:尝试第三方预编译的musl兼容wheel包
有些社区开发者会分享针对Alpine的TensorFlow预编译wheel,你可以搜索「tensorflow 1.2.1 alpine wheel」找可靠资源,找到后直接用pip3 install <wheel文件路径/URL>安装即可。不过一定要注意验证包的安全性,避免下载到恶意文件。
内容的提问来源于stack exchange,提问作者Suresh Nataraj
相关产品推荐
相关产品推荐

