Ubuntu18.04升级pip后pip3无法使用,咨询pip与pip3的差异及解决
我来帮你捋清楚这个问题,先把pip3报错的坑填上,再给你讲明白pip和pip3到底有啥不一样~
第一步:修复pip3的报错问题
你碰到的ImportError: cannot import name 'main',是因为升级pip后,系统原来的/usr/bin/pip3脚本和新安装的pip版本不兼容导致的,修复方法超简单:
- 打开系统自带的pip3脚本文件:
sudo nano /usr/bin/pip3 - 把原来的代码块:
替换成适配新版pip的代码:from pip import main if __name__ == '__main__': sys.exit(main())from pip._internal.main import main if __name__ == '__main__': sys.exit(main()) - 保存退出(按
Ctrl+O回车确认,再按Ctrl+X退出编辑器),之后再运行pip3 --version,应该就能正常显示版本号啦。
搞懂pip和pip3的核心区别
在Ubuntu 18.04这类系统里,默认同时预装了Python 2.x和Python 3.x两个版本:
pip是Python 2.x专属的包管理工具,用来给Python2安装第三方依赖包;pip3是Python 3.x专属的包管理工具,对应给Python3安装包。
你之前的状态是:系统里只装了Python3的pip(也就是pip3 9.0.x),Python2的pip没安装,所以输入pip会提示你要装python-pip。那为什么升级pip3 install pip之后,pip突然能用了?因为你用Python3的pip安装了新版pip,这个新版pip会自动创建pip和pip3两个可执行文件,但系统原来的/usr/bin/pip3脚本没同步更新,导致冲突报错;而新生成的pip脚本是适配新版pip的,所以能正常运行。
现在用pip和pip3安装包效果一样吗?
这得看你的pip现在指向的是哪个Python版本:
- 先运行
pip --version,看输出里的Python版本,比如如果显示pip 19.2.3 from ... (python 3.6),那这个pip其实就是给Python3装包的,和pip3效果完全一样; - 如果
pip指向的是Python2(比如显示python 2.7),那两者就有区别了:pip装的包只有Python2能调用,pip3装的包是给Python3用的。
所以等你修复好pip3之后,不管用pip3 install tensorflow-cpu还是(如果pip指向Python3的话)pip install tensorflow-cpu,都能成功给你的Python3安装tensorflow-cpu。
内容的提问来源于stack exchange,提问作者Nikesh Prasad
相关产品推荐
相关产品推荐

