前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Linux]Ubuntu安装pip及其各种bug解决方案

[Linux]Ubuntu安装pip及其各种bug解决方案

作者头像
祥知道
发布2020-03-10 15:55:04
3.3K0
发布2020-03-10 15:55:04
举报
文章被收录于专栏:祥的专栏祥的专栏

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:https://cloud.tencent.com/developer/article/1596379


文章目录

  • 环境
    1. 安装pip
    1. 查看pip版本
    1. 更新pip
    • 3.1. 正常更新
    • 3.2. 更新不了,通过源码安装更新
      • 3.2.1 下载源码
      • 3.2.2 解压安装
      • 3.2.3 更新到了最新版本,却出现错误ImportError: cannot import name main
    1. 卸载pip
    1. pip常用命令

环境

  • 配置环境: ubuntu 16.04
  • 针对环境:python2.7.12

1. 安装pip

代码语言:javascript
复制
apt-get install python-pip

# 当然可以把其他东西也一起安装上
apt-get install python-pip python-dev build-essential

2. 查看pip版本

代码语言:javascript
复制
#大写的V,或者--version
pip -V 
# 输出:
# pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

3. 更新pip

3.1. 正常更新

代码语言:javascript
复制
pip install --upgrade pip
#或者
pip install -U pip

但是有可能升级不了,显示:

代码语言:javascript
复制
root@qfx-HP-xw4600-Workstation:~# pip install -U pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/c2/d7/90f34cb0d83a6c5631cf71dfe64cc1054598c843a92b400e55675cc2ac37/pip-18.1-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
Successfully installed pip-8.1.1
You are using pip version 8.1.1, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

3.2. 更新不了,通过源码安装更新

各种方法都试过,比如使用命令:python -m pip install --upgrade pip进行安装,但是还是会出现上面的提示,所以就用源码进行升级。

3.2.1 下载源码

下载源码,也可以去pip官网下载 https://pypi.org/project/pip/#files

代码语言:javascript
复制
wget https://files.pythonhosted.org/packages/45/ae/8a0ad77defb7cc903f09e551d88b443304a9bd6e6f124e75c0fbbf6de8f7/pip-18.1.tar.gz
# ==========
# 详细安装信息
root@qfx-HP-xw4600-Workstation:~# mkdir pipDir
root@qfx-HP-xw4600-Workstation:~# cd pipDir/
root@qfx-HP-xw4600-Workstation:~/pipDir# wget https://files.pythonhosted.org/packages/45/ae/8a0ad77defb7cc903f09e551d88b443304a9bd6e6f124e75c0fbbf6de8f7/pip-18.1.tar.gz
--2018-11-23 13:56:53--  https://files.pythonhosted.org/packages/45/ae/8a0ad77defb7cc903f09e551d88b443304a9bd6e6f124e75c0fbbf6de8f7/pip-18.1.tar.gz
正在解析主机 files.pythonhosted.org (files.pythonhosted.org)... 2a04:4e42:1a::319, 151.101.109.63
正在连接 files.pythonhosted.org (files.pythonhosted.org)|2a04:4e42:1a::319|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 1259370 (1.2M) [binary/octet-stream]
正在保存至: “pip-18.1.tar.gz”

pip-18.1.tar.gz           100%[====================================>]   1.20M  9.92KB/s    in 2m 35s  

2018-11-23 13:59:31 (7.94 KB/s) - 已保存 “pip-18.1.tar.gz” [1259370/1259370])

root@qfx-HP-xw4600-Workstation:~/pipDir# ls
pip-18.1.tar.gz

3.2.2 解压安装

解压安装

代码语言:javascript
复制
# 解压
root@qfx-HP-xw4600-Workstation:~/pipDir# tar xzvf pip-18.1.tar.gz 
# 查看解压后的目录
root@qfx-HP-xw4600-Workstation:~/pipDir# ls
pip-18.1  pip-18.1.tar.gz
# 进入目录 查看里面的文件
root@qfx-HP-xw4600-Workstation:~/pipDir# cd pip-18.1/
root@qfx-HP-xw4600-Workstation:~/pipDir/pip-18.1# ls -1
AUTHORS.txt
docs
LICENSE.txt
MANIFEST.in
NEWS.rst
PKG-INFO
pyproject.toml
README.rst
setup.cfg
setup.py
src
# 安装pip
root@qfx-HP-xw4600-Workstation:~/pipDir/pip-18.1# python setup.py install
...
...

Installed /usr/local/lib/python2.7/dist-packages/pip-18.1-py2.7.egg
Processing dependencies for pip==18.1
Finished processing dependencies for pip==18.1
# 这表示安装成功

3.2.3 更新到了最新版本,却出现错误ImportError: cannot import name main

使用pip -V检测一下版本,发现出现错误:

代码语言:javascript
复制
root@qfx-HP-xw4600-Workstation:~/pipDir/pip-18.1# pip -V
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

出现问题的原因:

说是一个bug,导致只要用pip,就会抛出一个异常,但是要解决起来也比较容易。

首先定位问题:

问题出现在了/usr/bin/中的pip文件,用vim打开,进行编辑:

原来的代码

代码语言:javascript
复制
#!/usr/bin/python
# GENERATED BY DEBIAN

import sys 

# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import main
if __name__ == '__main__':
    sys.exit(main())

修改后的代码

代码语言:javascript
复制
#!/usr/bin/python
# GENERATED BY DEBIAN

import sys 

# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import __main__
#from pip import main
if __name__ == '__main__':
    sys.exit(__main__._main())
    #sys.exit(main())

保存后,去检测一下现在pip的版本:

代码语言:javascript
复制
root@qfx-HP-xw4600-Workstation:~/pipDir/pip-18.1# pip -V
pip 18.1 from /usr/local/lib/python2.7/dist-packages/pip-18.1-py2.7.egg/pip (python 2.7)

ok,已经成功更新到 pip 18.1 了。

4. 卸载pip

代码语言:javascript
复制
apt-get remove python-pip

5. pip常用命令

  • 查看pip帮助:pip -help
  • 安装新的python包:pip install packageName
  • 卸载python包:pip uninstall packageName
  • 寻找python包:pip search packageName
  • 查看python2pip安装包:pip list
  • 查看python3pip安装包:pip3 list

OK!

以上,Enjoy~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 环境
  • 1. 安装pip
  • 2. 查看pip版本
  • 3. 更新pip
    • 3.1. 正常更新
      • 3.2. 更新不了,通过源码安装更新
        • 3.2.1 下载源码
        • 3.2.2 解压安装
        • 3.2.3 更新到了最新版本,却出现错误ImportError: cannot import name main
    • 4. 卸载pip
    • 5. pip常用命令
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档