1. 程式人生 > >centOS安裝python3及pip3

centOS安裝python3及pip3

##centOS安裝python3及pip3
####第一步:python2備份
預設Centos7中是有python安裝的,但是是2.7版本,我們需要安裝py3。我們去看一下預設的py2.7在哪裡。

[[email protected] bin]# cd /usr/bin
[[email protected] bin]# ls python*
python python2 python2.7
[[email protected] bin]#

三個顯示結果中最後一個是python2.7,實際上這幾個檔案之間是有依賴關係的。在ls 後面加個 -al引數,如下:

[[email protected] bin]# ls -al python*
lrwxrwxrwx. 1 root root 33 Oct 21 12:30 python -> python2
lrwxrwxrwx. 1 root root 9 Oct 19 23:55 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 Aug 4 08:40 python2.7
[[email protected] bin]#

依賴關係很明顯就可以看到。我們要安裝版本3,首先要把剛才顯示的三個python檔案中的第一個python給備份一下(不保留原始檔,僅保留備份檔案就可以)

使用如下命令:

[[email protected] bin]# mv python python.bak

python檔案變成了python.bak檔案,bak檔案就放這裡吧,再也不用管它了。避免以後麻煩,就留在這裡不用刪除。系統準備好了,接下來,我們要去下載了。

####第二步:依賴關係

[[email protected] ~]# yum -y install zlib-devel
(https://www.jianshu.com/p/6ca263642afc)
[[email protected] ~]# yum -y install bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
(

https://blog.csdn.net/zuolovefu/article/details/78142507)

問題描述:“no module named ‘_ctypes’’”
Python3 中有個內建模組叫 ctypes,它是 Python3 的外部函式庫模組,它提供相容 C 語言的資料型別,並通過它呼叫 Linux 系統下的共享庫(Shared library),此模組需要使用 CentOS 7 系統中外部函式庫(Foreign function library)的開發連結庫(標頭檔案和連結庫)。
所以錯誤原因是:在 CentOS 7 系統中沒有安裝外部函式庫(軟體包名:libffi)的開發連結庫軟體包。
CentOS 7 系統下外部函式庫(libffi)的開發連結庫軟體包是 libffi-devel,只要安裝此軟體包即可解決:(https://blog.csdn.net/oZhengTuoJiaSuo/article/details/82427076)

[[email protected] ~]# yum -y install libffi-devel

問題描述:“cannot import name ‘httpshandler’”
原因在於openssl,openssl-devel兩個檔案包未正確安裝或者安裝順序出錯。
用下來的命令來安裝:(參考: https://www.cnblogs.com/liangmingshen/p/9515355.html)

[[email protected] ~]# yum install openssl -y
[[email protected] ~]# yum install openssl-devel -y

####第三步:安裝包下載

比較推薦下面這種方式,我們在linux上找一個目錄,然後使用wget命令下載到這個目錄,然後解壓->安裝。如下:

https://www.python.org/ftp/python/ 這個是所有的python版本存放的地方。我們想使用哪個版本就用哪個。
在這裡插入圖片描述

很多版本,這裡選擇的是比較新的3.7.0,點進去,找到下面這個檔案。Python-3.7.0.tgz,右鍵’copy link address’
在這裡插入圖片描述
在Python-3.7.0.tgz上右鍵’copy link address’可得到如下地址:(如果是其他版本道理與這個是一樣的)

https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

連結準備好了,我們在Centos 7上建立一個目錄吧。一般選擇的是/usr/local裡面的,如下命令(當前我們依然還在之前的/usr/bin目錄下面,先不要動,還在這裡):

[[email protected] bin]# mkdir /usr/local/python3

目錄建立好了,我們就cd切換進去,使用wget下載安裝包到當前目錄:

[[email protected] bin]# cd /usr/local/python3
[[email protected] python3]# wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz

等待下載完成之後會在當前目錄下出現一個tgz包,命令解壓這個包到當前目錄就可以:

#解壓命令
[[email protected] python3]# tar -xvf Python-3.6.3.tgz 
#解壓完成後,檢視目錄下檔案
[[email protected] python3]# ll
total 22148
drwxr-xr-x. 17  501  501     4096 Oct 21 12:22 Python-3.6.3
-rw-r--r--.  1 root root 22673115 Oct  3 15:47 Python-3.6.3.tgz

第四步:編譯安裝

下載的安裝包是未經過編譯的,需要編譯一下:

[[email protected] python3]# cd Python-3.6.3/
[[email protected] Python-3.6.3]#

然後如下命令(指定安裝位置為當前目錄下新建的python3dir資料夾):

[[email protected] Python-3.6.3]# ./configure --prefix=/usr/local/python3Dir

稍微解釋上面這句命令,這句話的大致目的就是把python的安裝目錄指定一下,這樣的話,裡面的一些bin目錄、lib目錄就都會存放在這個目錄下面。如果不指定這個安裝目錄的話,最後python的安裝檔案將分散到linux的預設目錄,不在一塊。我們指定安裝目錄,以後解除安裝的話直接刪除目錄就可以乾淨解除安裝了。

現在我們當前目錄還是在/usr/local/python3/Python-3.6.3,執行如下命令:

# 編譯安裝
# ./configure --help檢視編譯引數
# 預設安裝在'/usr/local/bin','/usr/local/lib' etc
# 可以通過引數指定如:--prefix=/usr/local/python3

[[email protected] Python-3.6.3]# make

然後出來一大堆程式碼,等它執行完畢。接著輸入以下命令:

[[email protected] Python-3.6.3]# make install

又是一大堆程式碼,執行完畢之後,檢查pip和setuptools是否安裝成功。
在這裡插入圖片描述
我們可以切換到/usr/local/python3dir目錄下去查看了。

[[email protected] Python-3.6.3]# cd /usr/local/python3Dir/
[[email protected] python3Dir]# ll
total 0
drwxr-xr-x. 2 root root 245 Oct 21 12:26 bin
drwxr-xr-x. 3 root root 24 Oct 21 12:26 include
drwxr-xr-x. 4 root root 63 Oct 21 12:26 lib
drwxr-xr-x. 3 root root 17 Oct 21 12:26 share
[[email protected] python3Dir]#

####第五步:建立軟連線

[[email protected] python3Dir]# cd /usr/bin
//建立軟連線:
[[email protected] bin]# ln -s /usr/local/python3Dir/bin/python3 /usr/bin/python3 //根據需要可修改為python
[[email protected] bin]# ln -s /usr/local/python3Dir/bin/pip3 /usr/bin/pip3

若將python3軟連線設定為python:
要注意centos的yum命令是需要python支援的,我們貿然把當期的版本更換了,萬一yum出錯怎麼辦,還是讓yum依然用原來的2.7版本吧。好吧我們幫它改一下吧:

[[email protected] bin]# vim /usr/bin/yum

將檔案第一行的
#!/usr/bin/python改成#!/usr/bin/python2.7

[[email protected] bin]# vim /usr/libexec/urlgrabber-ext-down

/usr/bin/python改為/usr/bin/python2.7

[[email protected] bin]# vim /usr/bin/yum-config-manager

解決辦法同上: #!/usr/bin/python換成 #!/usr/bin/python2.7

(https://blog.csdn.net/chaojiwanwan/article/details/71439066)

####測試python3及pip3:

[[email protected] bin]# python3 -V
Python 3.7.0
[[email protected] bin]# pip3 -V
pip 10.0.1 from /usr/local/python3Dir/lib/python3.7/site-packages/pip (python 3.7)

(參考: https://www.cnblogs.com/simuhunluo/p/7704765.html)

###獨立安裝pip3
####安裝setuptools

  • 下載setuptools壓縮包
  • 解壓壓縮包
  • 進入該目錄進行編譯安裝
1. 下載setuptools  wget --no-check-certificate  https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26

36.6.0的直接下載地址:
wget --no-check-certificate 
 https://pypi.python.org/packages/45/29/8814bf414e7cd1031e1a3c8a4169218376e284ea2553cc0822a6ea1c2d78/setuptools-36.6.0.zip#md5=74663b15117d9a2cc5295d76011e6fd1


2. 解壓該檔案 tar zxvf setuptools-19.6.tar.gz

3.進入該目錄 cd setuptools-19.6

4. 編譯安裝
 python3.5 setup.py build  
在這裡失敗,提示說需要zlib-devel依賴,RuntimeError: Compression requires the (missing) zlib module

好吧,那就繼續安裝這個依賴即可,yum在手,天下我有,有木有。
yum install -y zlib-devel

但是現在不能直接執行上一條編譯命令,因為這個zlib其實是針對python的,所以我們需要對python再進行一次編譯和安裝命令。
就是上文中所使用的make&make install即可。

ok,完事兒之後在執行
 python3.5 setup.py build   無報錯資訊
繼續執行
python3.5 setup.py install  搞完。

####安裝pip3

  • 下載pip3壓縮包
  • 解壓壓縮包
  • 進入該目錄進行編譯安裝
1. 使用Linux下載檔案 wget --no-check-certificate  https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb

pip-9.0.1的下載地址:https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9

2. 解壓檔案  tar zxvf pip-8.0.2.tar.gz

3. 進入該目錄 cd pip-8.0.2 

4. 同樣執行:
  python3.5 setup.py build
  python3.5 setup.py install

沒有提示錯誤,那麼就安裝成功了。

安裝好了之後會在我們的python目錄中成成該執行檔案的。
Adding pip 8.0.2 to easy-install.pth file
Installing pip3.5 script to /usr/local/python/bin
Installing pip3 script to /usr/local/python/bin
Installing pip script to /usr/local/python/bin

這個就是安裝是的提示,給我們說的很清楚,說將pip3安裝到了/usr/local/python/bin目錄中

對於我此時的目錄就是:
  /usr/local/python/bin

###解除安裝python3
由於我們在安裝python3的時候將其安裝位置指定到/usr/local/python3Dir/目錄中,故我們可直接刪除該目錄將python3解除安裝乾淨:

[[email protected] ~]# rm -rf /usr/local/python3Dir/
別忘了建立的軟連線:
[[email protected] bin]# rm /usr/bin/python3
[[email protected] bin]# rm /usr/bin/pip3