TensorFlow 1.15 官方仅支持 Python 3.5–3.7,不提供 Python 3.8 的预编译 wheel 包,因此 pip install tensorflow==1.15 必然失败;正确做法是创建 Python 3.7 环境并用 conda 或 pip 安装。

TensorFlow 1.15 官方不支持 Python 3.8,强行安装会报 No matching distribution found for tensorflow==1.15 ——这不是 pip 故障,是 PyPI 上真没这个组合的 wheel 包。
为什么 pip install tensorflow==1.15 总失败
TensorFlow 1.15.0–1.15.5 的官方预编译包(.whl)只构建在 cp35-cp35m 到 cp37-cp37m 标签上,即仅支持 Python 3.5–3.7。你用 python --version 看到 3.8.10,pip 就会去请求 cp38-win_amd64 或 cp38-manylinux2014_x86_64,但 PyPI 上根本没有这些文件。
常见误判点:
- 以为升级
pip就能解决——其实pip install --upgrade pip只让 pip 更懂新标签,但不会凭空造出不存在的包 - 看到
tensorflow-1.15.5-py3-none-any.whl就以为能用——这是纯 Python 包,不含 C++ 后端,import tensorflow会直接报ImportError: No module named '_pywrap_tensorflow_internal' - 用
conda install tensorflow=1.15却没指定 channel——默认 conda-forge 或 defaults 里早已下架 TF 1.x 的 3.8 构建
conda 创建 Python 3.7 环境是最稳路径
不是“降级”,而是按需匹配。TensorFlow 1.15 官方明确支持 Python 3.7,且 conda 能完整提供带 MKL、CUDA 10.0 驱动的二进制包。
立即学习“Python免费学习笔记(深入)”;
实操步骤:
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
- 运行
conda create -n tf115 python=3.7(不要写python=3.7.17,conda 会自动选最兼容的小版本) - 激活后先确认解释器:
which python(Linux/macOS)或where python(Windows),确保路径含envs/tf115 - 优先走 conda 安装:
conda install tensorflow=1.15.5;若超时或找不到,再换 pip:pip install tensorflow==1.15.5 -i https://pypi.tuna.tsinghua.edu.cn/simple/ - 验证:
python -c "import tensorflow as tf; print(tf.__version__, tf.test.is_built_with_cuda())"
硬要用 Python 3.8?只能绕过 wheel,源码编译
这不是推荐做法,但如果你被卡死在必须用 3.8 的 CI 环境或 Docker 基础镜像里,唯一可行路径是编译源码。注意:这要求机器有 GCC、Bazel 3.7.2、CUDA 10.0/cuDNN 7.6(仅 GPU 版),且耗时 30–90 分钟。
关键控制点:
- 必须用 TensorFlow 官方归档的
v1.15.5tag 源码,不是 GitHub 主干分支(后者已删 1.x 构建脚本) - 编译前设环境变量:
export PYTHON_BIN_PATH=$(which python),否则 Bazel 会调错解释器 - CUDA 支持需显式开启:
./configure时回答y并填对/usr/local/cuda-10.0路径,否则生成的包无 GPU kernel - 编译完得到的是
tensorflow-1.15.5-cp38-cp38-linux_x86_64.whl,只能在同构环境安装,无法分发
别忽略 CUDA/cuDNN 的隐性绑定
即使你成功装上了 tensorflow==1.15.5,运行时报 libcudnn.so.7: cannot open shared object file,说明动态链接失败——TF 1.15 编译时绑定了 cuDNN 7.6,而系统装的是 8.2 或 7.4。
检查方法:
- 查已安装 cuDNN:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR - 查 TF 编译信息:
python -c "import tensorflow as tf; print(tf.__git_version__)”(输出含cudnn76字样即锁定 7.6) - 临时修复:软链
ln -sf libcudnn.so.7.6.* /usr/local/cuda/lib64/libcudnn.so.7,但生产环境务必统一版本
真正省事的方式,是接受“Python 3.7 + TF 1.15”是经过千次 CI 验证的黄金组合,而不是在 3.8 上反复 patch。兼容性不是玄学,是 wheel 文件名里明明白白写着的 cp37。

















