1. 程式人生 > >記一次阿裏雲服務器安裝Python的血淚史

記一次阿裏雲服務器安裝Python的血淚史

配置文件 png usr 下載鏈接 centos ln -s 雲服務 dbf xargs

一、前言

之前我在windows 10系統上面安裝python 3.7,雖然在windows 上面安裝簡單,操作也方便,但是想要和linux 的shell 腳本交互就不方便了。因此,我決定在centos 7上面也安裝上python最新版本
在這期間,我踩了很多坑,也填了很多坑,後來幾乎要面臨崩潰了,期間發生了什麽?別著急,耐心往下看!

二、操作環境

操作系統:CentOS 7.4 64位

三、一般安裝步驟

1.下載python安裝包

wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0a3.tar.xz

2.解壓、配置、編譯安裝

tar xvf Python-3.8.0a3.tar.xz

cd Python-3.8.0a3
./configure

第一次踩坑了,報錯如下:

技術分享圖片

解決過程:

查看報錯信息,可以看出是系統缺少編譯工具gcc c++之類

yum install gcc gcc-c++ make cmake -y
./configure

處理結果:解決問題

技術分享圖片

接下來編譯安裝

make && make install

第二次踩坑:缺少sha512

技術分享圖片

解決過程:

上網查詢,應該是缺少openssl-devel,安裝openssl-devel,試過改各種配置文件,重新編譯安裝

yum install gcc-c++ gcc make cmake zlib-devel bzip2-devel openssl-devel ncurse-devel -y

make clean
make && make install

處理結果:依舊報相同錯誤

再次解決辦法:

隨後心一狠,刪除Python-3.8.0a3解壓包,然後重新解壓,配置,編譯安裝

cd ~
rm -rf Python-3.8.0a3
tar xvf Python-3.8.0a3.tar.xz
cd Python-3.8.0a3
./configure
make && make install

處理結果:解決問題,但又出現了新問題

第三次踩坑:沒有_ctypes模塊

技術分享圖片

解決方法:

查詢報警信息,原來是少了libffi-devel依賴包,安裝libffi-devel

yum install libffi-devel -y

make install

技術分享圖片

處理結果:解決問題

3.驗證python

(1)查看python版本號

技術分享圖片

(2)進入python環境

技術分享圖片

友情提示:此時直接使用python命令,默認是運行系統自帶的python2.7,不是新版本Python3.8命令,pip命令是python2.7的,pip3命令才是python3.8的!

技術分享圖片

最後跌入巨坑:

本來到這一步,新版本python可以使用了,就是每次使用命令都是python3,pip命令是pip3 install ,我覺得特別麻煩,於是進行了下面步驟操作(前方高能,千萬不要模仿,千萬不要模仿,千萬不要模仿,重要的事情說3遍!!!):

我上網搜索如何卸載Python 2.7, 然後操作步驟如下:

rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps
whereis python |xargs rm -frv
whereis python
python

技術分享圖片

我以為成功刪除python就結束了,沒想到當我使用yum 命令安裝軟件時,才發現出問題了:

技術分享圖片

我試著把其他的服務器上的/usr/bin/python文件拷貝過來使用,但是依舊同樣報錯。(/usr/bin/python是二進制文件,也沒辦法修改)

我接著尋找其他辦法,看到一篇訪問量挺高的博客,就嘗試了一下,操作如下:

rpm -qa|grep yum|xargs rpm -ev --allmatches --nodeps #卸載yum
whereis yum |xargs rm -frv
下載相關包
wget http://vault.centos.org/7.4.1708/os/x86_64/Packages/python-2.6.6-36.el6.x86_64.rpm
...... #省略相關步驟
使用rpm安裝python和yum依賴包
rpm -Uvh --replacepkgs python.rpm
rpm -Uvh --replacepkgs rpm-python
.rpm yum*.rpm

可是,我下載相關包失敗後,這時候,我才看到了底下評論,好多人都說這種辦法根本行不通,只能重裝系統了!我當時想死的心都有了。
技術分享圖片

在多次嘗試失敗後,只好求助阿裏雲技術人員(服務器是阿裏雲的!),人家給出了建議:初始化磁盤(等同於重裝系統)
技術分享圖片

最後解決措施:初始化磁盤!

技術分享圖片

其實,入坑才是最好的成長方式,但一定要學會總結,才不會重蹈覆轍!

踩坑總結:

1.在安裝前要下載好所有依賴包,避免編譯安裝時出錯。
2.了解yum 和python的關系,yum 安裝軟件需要依賴Python環境。
3.網上的技術文檔未必每一篇都實用,尤其是刪除,卸載軟件類要十分慎重,最好有備份!
4.centos 系統刪除yum及python後,並非無解,只是由於版本不同,相關軟件包十分不好找,這個坑還是不要去踩!

避免大家重蹈覆轍,我整理了避坑安裝步驟如下:

1.下載python

cd /usr/local
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0a3.tar.xz
yum install gcc-c++ gcc make cmake zlib-devel bzip2-devel openssl-devel ncurse-devel libffi-devel -y #安裝編譯工具

2.解壓、配置、編譯安裝

tar xvf Python-3.8.0a3.tar.xz
mv Python-3.8.0a3 python-3.8
cd /usr/local/python-3.8
./configure
make && make install
python3 -V

3.刪除,備份python2.7

mv /usr/bin/python /usr/bin/python.bak

4.建立軟連接

ln -s /usr/local/bin/python3.8 /usr/bin/python #建立python命令軟連接
python

技術分享圖片

ln -s /usr/local/bin/pip3 /usr/bin/pip #建立pip命令軟連接
pip install --upgrade pip #測試pip命令(此處為更新命令)

技術分享圖片

有人會問,python2版本都刪幹凈了嗎?怎麽檢查現在輸入python命令進入的是2版本還是3版本,pip命令是在2版本中執行,還是在3版本中執行的,這裏我總結了一些技巧!(圖片僅供參考,此時python2.7已經刪除,正常情況不會出現python2.7相關圖片!

判斷python2.7 與python3.8版本技巧:輸入python 命令後,看版本號!

python2.7版本

技術分享圖片

python3.8版本

技術分享圖片

判斷pip 命令運行的版本號技巧:看有無警告字體!

在python2.7版本中

技術分享圖片

在python3.8版本中

技術分享圖片

5.修改yum依賴

vim /usr/bin/yum
將/usr/bin/python改為/usr/bin/python2.7

技術分享圖片

vim /usr/libexec/urlgrabber-ext-down
將/usr/bin/python改為/usr/bin/python2.7

技術分享圖片

6.驗證yum功能

yum install -y wget

技術分享圖片

重大福利:

為了方便大家快速安裝python3.8,我寫了一個shell腳本自動安裝python,拿走不謝!下載鏈接:https://down.51cto.com/data/2460942

參考文件:
python 安裝 https://blog.csdn.net/luduo8055/article/details/82782660
python 升級 https://blog.51cto.com/10316297/2134736

記一次阿裏雲服務器安裝Python的血淚史