已安装Python3.7,为何pip/pip3默认指向Python3.6?如何修改?
问题原因分析
首先咱们得把根源理清楚:
- Windows系统查找命令时,是按PATH环境变量里的顺序检索,但如果旧版本的
pip.exe/pip3.exe被放在了优先级更高的目录(比如C:\Windows\System32),或者你修改PATH后没重启命令提示符,系统还在使用旧的路径缓存,就会出现「3.7路径在前却还是调用3.6 pip」的情况。 - 另外,Python Launcher(也就是
py.exe)和pip是两套独立机制:py.exe是专门管理多Python版本的工具,会优先识别最新版本或你指定的版本,但pip.exe是每个Python版本单独安装的可执行文件,它的关联完全由PATH和文件位置决定,所以py --version正常不代表pip也会同步匹配。
解决步骤
第一步:定位问题根源
打开命令提示符,执行这条命令,看看系统到底在调用哪个路径的pip:
where pip
这个命令会列出所有找到的pip.exe路径,你能一眼看到是哪个路径的pip在「抢风头」。
第二步:根据结果针对性解决
情况1:旧版本pip在高优先级目录
如果输出里出现C:\Windows\System32\pip.exe或者其他比你3.7 Scripts目录更靠前的路径,直接删除这些旧的pip.exe和pip3.exe文件就行——这些都是之前装3.6时遗留的冗余文件,留着只会添乱。
情况2:3.7的Scripts目录里没有pip.exe
如果where pip只找到3.6的pip路径,说明你装Python3.7时可能没自动装上pip,执行下面的命令给3.7补装并升级pip:
py -3.7 -m ensurepip --upgrade
执行完后,去3.7的Scripts目录(C:\Users\luca\AppData\Local\Programs\Python\Python37\Scripts\)看看,应该就有pip.exe和pip3.exe了。
情况3:PATH顺序没问题,但缓存没刷新
如果你已经把3.7的Scripts放在PATH最前面,但还是调用旧pip,那大概率是命令提示符的PATH缓存没更新——关掉当前所有cmd窗口,重新开一个再试,Windows的PATH在cmd启动后不会自动刷新,必须重启窗口才会读取新设置。
第三步:永久避免版本冲突(推荐)
其实Python官方早就推荐用py launcher配合-m pip的方式调用pip,这样完全不会搞混版本:
- 给3.7装包:
py -3.7 -m pip install 包名 - 给3.6装包:
py -3.6 -m pip install 包名
这种方式直接指定Python版本,调用对应版本的pip模块,比单独用pip/pip3靠谱多了,以后也不用再纠结路径问题。
内容的提问来源于stack exchange,提问作者the_eraser
相关产品推荐
相关产品推荐

