python3中pip3安裝出錯,找不到SSL

玩人發表於2017-09-07

  最近在Ubuntu16.04上安裝Python3.6之後,使用pip命令出現了問題,提示說找不到ssl模組,出現錯誤如下:

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

Could not fetch URL https:*******: There was a problem confirming the ssl certificate: 
Can't connect to HTTPS URL because the SSL module is not available. - skipping

  本人安裝Python3.6的操作如下:

1.wget獲取安裝包:
    wget http://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz

2.解壓安裝包:
    tar -xvzf Python-3.6.2.tgz

3.檢查安裝平臺屬性,系統是否有編譯時所需要額庫,以及庫的版本是否滿足編譯需要
    ./configure

4.編譯原始碼
    make

5.成功編譯之後,安裝
    sudo make install

  在安裝完之後,我們希望用pip3命令來安裝numpy。首先,用如下命令安裝pip3:

sudo install python3-pip

  安裝完之後,使用pip3安裝numpy:

sudo pip install python-numpy

  但是此時就出錯了,顯示本文開始提到的錯誤,大致意思就是安裝過程需要SSL,但是那個SSL找不到。

  本人查閱網上資料,發現openSSL是系統自帶的,所以一定是安裝了的,本人用以下命令嘗試再次安裝openssl:

sudo apt-get install openssl
sudo apt-get install libssl-dev

  但是安裝結果顯示是對其進行更新(update),這說明系統已經安裝了openssl。但是pip3就是找不到ssl模組。

  本人進入python3中,然後進行ssl匯入操作:

import ssl

  結果出錯,錯誤如下:

no moudle named _ssl

  顯示沒有ssl模組。本人再進入python中(即系統自帶的python2.7中),進行ssl匯入操作:

import ssl

  發現並沒有顯示錯誤,匯入正常。這說明openssl已經安裝了,只是python2可以呼叫,新安裝的python3卻不能呼叫。

  本人查閱資料發現,在./configure過程中,如果沒有加上–with-ssl引數時,預設安裝的軟體涉及到ssl的功能不可用,剛好pip3過程需要ssl模組,而由於沒有指定,所以該功能不可用。

  解決辦法是重新對python3.6進行編譯安裝,用一下過程來實現編譯安裝:

cd Python-3.6.2
./configure --with-ssl
make
sudo make install

  這樣就允許安裝的python3使用ssl功能模組,進入python3中,執行import ssl發現未出錯,正常再次呼叫pip3指令來安裝numpy,發現正常,問題解決!

相關文章