pip3.7 -V显示版本报错StopIteration
1. 背景
蓝区开发环境90.90.66.60环境由于他人错误升级pip3造成了如下问题:
[root@lfbn-idf1-1-1628-60 dcs-60]# pip3.7 -V
Traceback (most recent call last):
File "/usr/local/python3.7.5/bin/pip3.7", line 33, in <module>
sys.exit(load_entry_point('pip==22.3.1', 'console_scripts', 'pip3.7')())
File "/usr/local/python3.7.5/bin/pip3.7", line 25, in importlib_load_entry_point
return next(matches).load()
StopIteration
2. 排查过程
排查pip3.7软连接
[root@lfbn-idf1-1-1628-60 dcs-60]# which pip3.7
/usr/local/python3.7.5/bin/pip3.7
[root@lfbn-idf1-1-1628-60 dcs-60]# /usr/local/python3.7.5/bin/pip3.7 -V
Traceback (most recent call last):
File "/usr/local/python3.7.5/bin/pip3.7", line 33, in <module>
sys.exit(load_entry_point('pip==22.3.1', 'console_scripts', 'pip3.7')())
File "/usr/local/python3.7.5/bin/pip3.7", line 25, in importlib_load_entry_point
return next(matches).load()
StopIteration
[root@lfbn-idf1-1-1628-60 dcs-60]# ll /usr/bin/python3.7.5
lrwxrwxrwx. 1 root root 36 Jul 20 00:05 /usr/bin/python3.7.5 -> /usr/local/python3.7.5/bin/python3.7
[root@lfbn-idf1-1-1628-60 dcs-60]# ll /usr/local/python3.7.5/bin/python3.7
ls: cannot access /usr/local/python3.7.5/bin/python3.7: No such file or directory
# 检查pip3.7的bash文件
[root@lfbn-idf1-1-1628-60 dcs-60]# cat /usr/bin/pip3.7
#!/usr/local/python3/bin/python3.7
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
结论:pip3.7软连接目标文件失效。 pip3.7的bash文件正常,指向目标
排查pip3软连接
[root@lfbn-idf1-1-1628-60 dcs-60]# which pip3
/usr/bin/pip3
[root@lfbn-idf1-1-1628-60 dcs-60]# ll /usr/bin/pip3
lrwxrwxrwx. 1 root root 29 Nov 12 19:52 /usr/bin/pip3 -> /usr/local/python3/bin/pip3.7
[root@lfbn-idf1-1-1628-60 dcs-60]# pip3 -V
pip 22.3.1 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)
[root@lfbn-idf1-1-1628-60 dcs-60]# /usr/local/python3/bin/pip3.7 -V
pip 22.3.1 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)
结论:pip3软连接正常
3. 问题修复
解决思路:使用pip3正常的源文件修复pip3.7的软连接
[root@lfbn-idf1-1-1628-60 dcs-60]# rm -f /usr/bin/pip3.7
[root@lfbn-idf1-1-1628-60 dcs-60]# ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3.7
[root@lfbn-idf1-1-1628-60 dcs-60]# rm -f /usr/bin/pip3.7.5
[root@lfbn-idf1-1-1628-60 dcs-60]# ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3.7.5
4. 修复验证
[root@lfbn-idf1-1-1628-60 dcs-60]# pip3.7 -V
pip 22.3.1 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)
[root@lfbn-idf1-1-1628-60 dcs-60]# pip3.7.5 -V
pip 22.3.1 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)
[root@lfbn-idf1-1-1628-60 dcs-60]#
总结:软连接失效,重新更新源文件或文件夹即可