在虚拟环境中安装tensorflow-gpu时为何会下载所有版本?
问题:pip为何会尝试下载所有版本的tensorflow-gpu?
我正在跟随YouTube上的TensorFlow音频分类教程操作,教程要求安装以下依赖:
pip install tensorflow tensorflow-gpu tensorflow-io matplotlib
按照规范,我创建了venv虚拟环境并让Jupyter Notebook使用该环境,但发现pip会尝试下载所有版本的tensorflow-gpu,这些文件体积相当大:
(venv) c:\users\myuser\myproject>pip install tensorflow tensorflow-gpu tensorflow-io matplotlib Collecting tensorflow Downloading tensorflow-2.11.0-cp39-cp39-win_amd64.whl (1.9 kB) Collecting tensorflow-gpu Downloading tensorflow_gpu-2.10.1-cp39-cp39-win_amd64.whl (455.9 MB) |████████████████████████████████| 455.9 MB 106 kB/s Collecting tensorflow-io Downloading tensorflow_io-0.28.0-cp39-cp39-win_amd64.whl (22.9 MB) |████████████████████████████████| 22.9 MB 6.4 MB/s Collecting matplotlib Downloading matplotlib-3.6.2-cp39-cp39-win_amd64.whl (7.2 MB) |████████████████████████████████| 7.2 MB 2.2 MB/s # (中间依赖下载内容省略) Collecting tensorflow-gpu Downloading tensorflow_gpu-2.8.0-cp39-cp39-win_amd64.whl (438.0 MB) ERROR: Operation cancelled by user WARNING: You are using pip version 21.2.3; however, version 22.3.1 is available.
原因及解决办法
核心原因
- tensorflow-gpu包已被废弃:从TensorFlow 2.10版本开始,官方不再单独发布
tensorflow-gpu包,GPU支持已整合到主tensorflow包中。只要你的系统配置了兼容的CUDA环境,安装普通tensorflow就能自动启用GPU加速。 - 版本冲突导致依赖解析失败:你安装的
tensorflow是2.11.0版本,但tensorflow-gpu的最高版本仅为2.10.x,两者版本不兼容。pip为了找到满足所有依赖约束的组合,会不断回溯更低版本的tensorflow-gpu,从而出现反复下载旧版本的情况。 - 旧版pip解析效率低:你使用的pip版本是21.2.3,较旧的pip在依赖冲突处理上效率较差,会加剧这种重复下载的问题。
解决步骤
- 移除tensorflow-gpu安装命令:直接执行以下命令安装,新版tensorflow已包含GPU支持:
pip install tensorflow tensorflow-io matplotlib - 匹配教程指定版本(可选):如果教程依赖特定版本,可明确指定兼容的tensorflow版本,比如和最后一个有tensorflow-gpu的2.10.x版本匹配:
pip install tensorflow==2.10.0 tensorflow-io matplotlib - 升级pip版本:执行以下命令升级pip,提升依赖解析效率:
pip install --upgrade pip
内容的提问来源于stack exchange,提问作者SopMe
相关产品推荐
相关产品推荐

