python——reuqests模塊使用pip安裝始終不成功

使用pip install xxx 來安裝某一庫。php

使用 pip uninstall xxx 來卸載。python

而pip 的也能夠採用常見的兩種安裝方法ubuntu

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

在ubuntu 系列下 
使用 sudo apt-get install python-pip 
刪除 sudo apt-get autoremove python-pippython2.7

這兩個系統均可以使用 
https://pip.pypa.io/en/stable/installing/ 
提供的安裝py腳本 
下載後執行 sudo python get-pip.pyurl

問題

我在刪除requests這個第三方庫時候,centos上直接執行了 
pip uninstall requests 便刪除掉了該庫。spa

而一樣的操做在ubuntu上卻提示了 
Not uninstalling at /usr/lib/python2.7/dist-packages, owned by OS3d

能夠看到提示屬於系統,沒法刪除。code

非常疑惑。一個小小的庫,怎麼屬於系統了呢?blog

原來這臺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 requestsdrwxr-sr-x 2 root staff 4096 8月 28 14:23 requests-2.19.1.dist-infodrwxr-sr-x 5 root staff 4096 8月 28 14:23 urllib3drwxr-sr-x 2 root staff 4096 8月 28 14:23 urllib3-1.23.dist-info

相關文章
相關標籤/搜索