記一次阿裏雲服務器安裝Python的血淚史
之前我在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的血淚史