使用pip install xxx 来安装某一库。

使用 pip uninstall xxx 来卸载。

而pip 的也可以采用常见的两种安装方法

在centos系列下 
使用sudo yum install python-pip 
删除sudo yum remove python-pip

在ubuntu 系列下 
使用 sudo apt-get install python-pip 
删除 sudo apt-get autoremove python-pip

这两个系统都可以使用 
https://pip.pypa.io/en/stable/installing/ 
提供的安装py脚本 
下载后执行 sudo python get-pip.py

问题

我在删除requests这个第三方库时候,centos上直接执行了 
pip uninstall requests 便删除掉了该库。

而同样的操作在ubuntu上却提示了 
Not uninstalling at /usr/lib/python2.7/dist-packages, owned by OS

可以看到提示属于系统,无法删除。

很是疑惑。一个小小的库,怎么属于系统了呢?

原来这台ubuntu 的pip 采用的是apt-get install python-pip 方法安装的。

import requests
print requests.__file__
  • 1
  • 2

上面的方法可以看到该库的位置

/usr/lib/python2.7/dist-packages

而我印象中的库一般都是存放在site-packages 中。

查阅了一下

dist-packages 是 Debian特定惯例,这也存在于像是ubuntu上。 如果使用Debian软件管理器安装, 模块将被安装到 dist-packages: 
/usr/lib/python2.7/dist-packages

dist-packages取代了site-packages。从Debian安装包安装的第三方的Python软件 被 安装到 dist-packages,不是 site-packages.这是为了减少,系统自带python 和 你手动安装的python 之间的冲突。

这就是说,如果你手动安装python,它会直接使用目录site-packages。这允许你让两个安装隔离开来,特别是因为Debian 和 Ubuntu 应用 python的系统版本 到 许多的系统实体。

可见是ubuntu的这个特性造成的问题。

于是到该目录删除掉requests 包。 
apt-get autoremove python-pip

采用脚本的方法安装。

之后执行发现提示 No such file or directory

which 一下,发现pip 和python 不在一个目录下

执行 
ln -s /usr/local/bin/pip /usr/lib/pip

建立软连接,然后使用该pip 安装的requests就进入正常的site-packages 文件夹中。 
也可以使用pip uninstall 删除了。

后续

在交互界面import requests 后,提示

/usr/local/lib/python2.7/dist-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.21.1) or chardet (2.0.1) doesn’t match a supported version! 
RequestsDependencyWarning)

可见requests库依赖的包有 urllib3以及 chardet

版本不匹配是因为,我们使用apt-get install requests 时也自动安装了这俩个依赖库,而我们删除时却没有删掉他们。

为此,执行

apt-get autoremove urllib3 
apt-get autoremove chardet

这样就删除掉存在/usr/lib/python2.7/dist-packages下面的包。

在执行pip install requests --upgrade. 
此次的依赖包就会安装到 /usr/local/lib/pytrhon2.7/dist-packages 下面。

再次导入就不会有问题,成功安装提示如下:

drwxr-sr-x 2 root staff 4096 8月 28 14:23 requests
drwxr-sr-x 2 root staff 4096 8月 28 14:23 requests-2.19.1.dist-info
drwxr-sr-x 5 root staff 4096 8月 28 14:23 urllib3
drwxr-sr-x 2 root staff 4096 8月 28 14:23 urllib3-1.23.dist-info

python——reuqests模块使用pip安装始终不成功的更多相关文章

  1. 命令行窗口中使用pip安装第三方库成功之后,在pycharm中仍不能使用

    在学习廖老师的Python教程的时候,遇到命令行窗口中使用pip安装第三方库成功之后,在pycharm中仍不能使用的情况, 这种情况可能是由于在本地安装了多个Python版本的缘故(只是可能的情况之一 ...

  2. Linux 下 安装Python第三方模块工具箱pip,以及用pip安装的方法

    下载文件 wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate 执行安装 python get-pip.py 可以做一个软连 ...

  3. Python各种模块下载及安装配置

    方式1 在Python官网https://www.python.org/或者是github搜索进行下载 ,解压缩之后通过命令提示符进入已经解压缩文件夹根目录,输入下面的命令: python setup ...

  4. 【Python使用】使用pip安装卸载Python包(含离线安装Python包)未完成???

    pip 是 Python 包管理工具,该工具提供了对Python包的查找.下载.安装.卸载的功能.Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具. pip使用( ...

  5. python安装pip和使用pip安装Python库类比如pip安装beautifulsoup4

    初学Python时,看到很多不懂得东西,比如 pip, 是python 包管理工具,pip是easy_install的取代. Distribute是对标准库disutils模块的增强,我们知道disu ...

  6. 详解python包管理器pip安装

    pip对于使用python的朋友并不陌生,当你想安装python模块的时候一定会首先想到它.pip 是一个安装和管理 Python 包的工具 , 是 easy_install 的一个替换品. 今天来说 ...

  7. Python中怎样用pip安装外部主机文件

    在python中安装非自带python模块.有三种方式: easy_install pip 下载压缩包(.zip, .tar, .tar.gz)后解压, 进入解压缩的文件夹后运行python setu ...

  8. python包管理之Pip安装及使用-1

    Python有两个著名的包管理工具easy_install.py和pip.在Python2.7的安装包中,easy_install.py是默认安装的,而pip需要我们手动安装. pip可以运行在Uni ...

  9. python包管理之Pip安装及使用

    Python有两个著名的包管理工具easy_install.py和pip.在Python2.7的安装包中,easy_install.py是默认安装的,而pip需要我们手动安装. pip可以运行在Uni ...

随机推荐

  1. 撩课-Python-每天5道面试题-第4天

    一. for循环和while循环中的else代表什么意思? 当for循环和while循环顺利的遍历完成时, 就会执行else分支 如果循环过程中, 碰到continue, 只要没有打断循环, 就会继续 ...

  2. Java实现进程调度算法(一) FCFS(先来先服务)

    一.概述 因为这次os作业对用户在控制台的输入输出有要求,所以我花了挺多的代码来完善控制台的显示. 也因为我这次要实现多个类似算法,所以将一些共性单独提取出来作为一个类. 如果只想要和算法有关的核心代 ...

  3. groovy函数、字符串、循环

    三重单引号字符串 '''a triple single quoted string''' 三重单引号字符串是普通的java.lang.String 三重单引号字符串是多行的.您可以跨越行边界跨越字符串 ...

  4. C#解析PDF

    C#解析PDF的方式有很多,比较好用的有ITestSharp和PdfBox. PDF内容页如果是图片类型,例如扫描件,则需要进行OCR(光学字符识别). 文本内容的PDF文档,解析的过程中,我目前仅发 ...

  5. 深入理解Java虚拟机---类加载机制(简略版)

    类加载机制 谈起类加载机制,在这里说个题外话,当初本人在学了两三个月的Java后,只了解了一些皮毛知识,就屁颠屁颠得去附近学校的招聘会去蹭蹭面试经验,和HR聊了一会后开始了技术面试,前抛出了两个简单的 ...

  6. web 开发人员必须学习的 3 门语言

    web 开发人员必须学习的 3 门语言:html  css  js HTML 定义了网页的内容 CSS 描述了网页的布局 JavaScript 网页的行为

  7. 可持久化trie(BZOJ5338: [TJOI2018]xor)

    题面 BZOJ Sol 显然是要维护一个区域的 \(trie\) 树,然后贪心 区间 \(trie\) 树??? 可持久化 \(trie\) 树??? 直接参考主席树表示出区间的方法建立 \(trie ...

  8. TopCoder14580: EllysRPS

    题意 \(yyb\)要去与\(m\)\((m\le100)\)个人玩游戏 由于\(yyb\)忙着切大火题,他没有太多的精力浪费在游戏上 所以仁慈的\(yyb\)决定放\(m\)个人一条生路,不吊打他们 ...

  9. 关于this的全面解析(call,apply,new)

    我们在写代码的时候,时常会被this弄的傻傻分不清楚,看源码的时候也经常被call啊apply啊弄的头皮发麻.this到底是什么?本文主要根据书上和实际应用做了一些归纳.一般情况下this有4种绑定规 ...

  10. Android N(API level 24.)废弃了Html.fromHtml(String)

    从API level 24开始,fromHtml(String)被废弃,使用fromHtml(String source, int flags) 代替 flags: FROM_HTML_MODE_CO ...