为何pip升级版本随Python版本变化?TensorFlow镜像实践疑问
在Mac环境下,我通过docker run tensorflow/tensorflow:2.9.0-gpu python3 -m pip install -U pip拉取了2.9.0、2.6.1、2.4.0、2.3.1这4个TensorFlow镜像,观察pip版本变化如下:
- 4个容器初始pip版本均为20.2.4;
- 搭载Python 3.6.9的2.3.1和2.4.0镜像,pip升级至21.3.1;
- 搭载Python 3.8.10的2.6.1和2.9.0镜像,pip升级至22.2.2。
疑问
- 同样执行
python3 -m pip install -U pip,为何pip升级版本有21.3.1和22.2.2的差异? - Python版本如何影响pip升级后的版本?
- 2.3.1和2.4.0版本的TensorFlow镜像能否升级至pip 22.2.2?当前21.3.1版本pip安装scipy==1.7.3时提示
ERROR: No matching distribution found for scipy==1.7.3,可选的scipy版本范围更小。
此外,希望了解相关技术概念,以及可用于调试/预测Python对应pip版本的命令。
编辑补充
我使用verbose参数调试pip,执行pip install -v scipy==1.7.3后发现,不同版本pip均指向同一索引地址https://pypi.org/simple/scipy/,该索引中包含scipy 1.5.4以上版本,但pip会进行Python版本兼容性校验。
日志最后一行显示:
Link requires a different Python (3.6.9 not in: '>=3.7'): https://files.pythonhosted.org/packages/4b/30/e15b806597e67057e07a5acdc135216ccbf76a5f1681a324533b61066b0b/pip-22.2.2.tar.gz#sha256=3fd1929db052f056d7a998439176d3333fa1b3f6c1ad881de1885c0717608a4b (from https://pypi.org/simple/pip/) (requires-python:>=3.7)
最初误以为日志中pip版本相关内容来自scipy检索,后发现是先检索scipy版本,再检索pip版本:
1 location(s) to search for versions of scipy: * https://pypi.org/simple/scipy/
之后执行:
1 location(s) to search for versions of pip: * https://pypi.org/simple/pip/
内容的提问来源于stack exchange,提问作者Han Qi

