天天看點

Linux下Python3.6的安裝及避坑指南rpm -qa | grep opensslyum update "openssl*"rpm -qa | grep openssl

Python3的安裝

1.安裝依賴環境

Python3在安裝的過程中可能會用到各種依賴庫,是以在正式安裝Python3之前,需要将這些依賴庫先行安裝好。

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

2. 下載下傳Python3源代碼

下載下傳Python3的源代碼有兩種方式,一種是在它的官網下載下傳,網址如下:

https://www.python.org/downloads/source/

另外一種方式是通過wget直接下載下傳,如以下指令:

wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz           

3. 建立安裝目錄

安裝目錄可依個人喜好建立,比如在此建立在 /usr/local/python3 :

mkdir -p /usr/local/python3           

4. 解壓源碼包

将第2步下載下傳到的源碼包進行解壓,指令為:

tar -zxvf Python-3.6.1.tgz           

5. 編譯源碼

安裝必要的python依賴包,否則pip安裝有問題

sudo apt-get install libffi-dev           

先進入解壓後源碼包的目錄,再進行配置:

cd Python-3.6.1
./configure --prefix=/usr/local/python3.6
之後再編譯,然後再安裝:
make & make install           

6. 建立Python3的軟連結

不能亂删除系統原生python,改新增python小版本

ln -s /usr/local/python3.6/bin/python3 /usr/bin/python3.6

添加pip3
 ln -s /usr/local/python3.6/bin/pip3.6 /usr/local/bin/pip3.6           

7. 将/usr/local/python3/bin加入PATH

編輯bash_profile進行修改環境變量:

vim ~/.bash_profile

在PATH變量下将Python3的啟動目錄添加進去:

# .bash_profile
​
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
​
# User specific environment and startup programs
​
PATH=$PATH:$HOME/bin:/usr/local/python3/bin
​
export PATH           

改動完畢之後,按Esc,再輸入:wq進行儲存退出。

8. 檢查Python3及Pip3是否正常可用

執行如下指令(注意:V是大寫的V),如果看到的結果一緻的話,說明Python3已經成功安裝。

[alvin@VM_0_16_centos ~]$ python3 -V
Python 3.6.1
[alvin@VM_0_16_centos ~]$ pip3 -V
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)           

避坑指南

安裝python3 後pip3 install 報錯

subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.
           

我搜到的都是說删除一個東西,原因是什麼也不是太懂,反正用:

sudo rm /usr/bin/lsb_release           

其實,對于Python3的安裝,網絡上有太多的文章了,步驟其實都大同小異。但是,在真正動手安裝之後,或多或少都會遇到一些麻煩,特别是對新手而言。下面良許就列舉一些常見的坑:

坑1:configure: error: no acceptable C compiler found in $PATH

這個問題就比較簡單,就是缺少gcc編譯環境。将gcc安裝上即可:

yum install -y gcc

當然除此之外,采用源碼安裝的方式也可以。

坑2:zipimport.ZipImportError: can’t decompress data

這種問題就是因為缺少zlib 的相關工具包導緻的,将相關依賴包裝上即可:

yum -y install zlib*

安裝之後再重新編譯源碼,即可解決。

坑3:pip3: Can't connect to HTTPS URL because the SSL module is not available

這個問題是因為在./configure過程中,如果沒有加上–with-ssl參數時,預設安裝的軟體涉及到ssl的功能不可用,剛好pip3過程需要ssl子產品,而由于沒有指定,是以該功能不可用。解決辦法如下:

cd Python-3.6.2

./configure --with-ssl

make

sudo make install

坑4:Multilib version problems

這個很明顯了,就是同一個庫有多個版本。把多餘的版本删除了就好。

首先查詢已有的版本(以openssl為例,沖突哪個查哪個)

rpm -qa | grep openssl

openssl-devel-1.0.0-27.el6_4.2.x86_64

openssl-1.0.0-27.el6_4.2.x86_64

openssl-1.0.0-27.el6_4.2.i686

可以看到系統裡安裝了openssl-1.0.0-27.el6_4.2.x86_64和openssl-1.0.0-27.el6_4.2.i686兩個版本的openssl,我們留下x86的版本即可:

yum update "openssl*"