• python——reuqests模块使用pip安装始终不成功


    使用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

  • 相关阅读:
    《HTTP 权威指南》笔记:第十二章 基本认证体制
    os模块,序列化模块
    常用模块,时间模块,sys模块
    random模块
    re模块
    正则表达式
    模块和包
    内置方法及模块初识,set的hash算法面试题
    fromkeys,eval,join的使用
    反射及内置方法
  • 原文地址:https://www.cnblogs.com/tibetanmastiff/p/9548095.html
Copyright © 2020-2023  润新知