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’可得到如下地址:(如果是其他版本道理與這個是一樣的)
連結準備好了,我們在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