服務(wù)器Centos7部署安裝Python3的完整過(guò)程(3.10.1)
最近,老馬要用到幾個(gè)python3的新包和模塊。之前服務(wù)器上安裝的舊版Python3.6,沒(méi)有這些模塊。
于是,就想著把centon7服務(wù)器上的python安裝個(gè)新版3.10。
原以為10分鐘就能搞完的,沒(méi)想到,總是遇到莫名其妙的問(wèn)題,一下子折騰了2小時(shí)。。。
1. 安裝開(kāi)發(fā)工具和依賴項(xiàng)。
# 安裝 "Development tools" 軟件組,其中包含編譯和開(kāi)發(fā)工具
yum -y groupinstall "Development tools"
# 安裝 Python 編譯和運(yùn)行所需的開(kāi)發(fā)庫(kù)和依賴項(xiàng)
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
# 安裝 libffi 開(kāi)發(fā)庫(kù)和 zlib1g-dev 包,它們是 Python 編譯和運(yùn)行的額外依賴項(xiàng)
yum install -y libffi-devel zlib1g-dev
# 安裝所有以 "zlib" 開(kāi)頭的軟件包,以滿足可能的 zlib 依賴項(xiàng)
yum install zlib* -y
?2. 下載 Python 3.10 的源代碼。
wget https://www.python.org/ftp/python/3.10.1/Python-3.10.1.tar.xz
官網(wǎng)地址、其他版本:https://www.python.org/ftp/python
3. 解壓 Python 源代碼文件。
tar -xvJf Python-3.10.1.tar.xz
4. 創(chuàng)建 Python 3.10 的安裝目錄。
mkdir /usr/local/python3
5. 升級(jí) OpenSSL 版本。
# 查看當(dāng)前 OpenSSL 版本
openssl version
# 下載最新的 OpenSSL
wget https://www.openssl.org/source/openssl-1.1.1m.tar.gz --no-check-certificate
# 安裝 perl
yum -y install perl
# 解壓 OpenSSL 源代碼文件
tar -zxvf openssl-1.1.1m.tar.gz
# 進(jìn)入解壓后的 OpenSSL 目錄
cd openssl-1.1.1m
# 配置 OpenSSL 的安裝路徑
./config --prefix=/usr/local/openssl
# 編譯并安裝 OpenSSL
make && make install
# 備份系統(tǒng)中的舊 OpenSSL 可執(zhí)行文件
mv /usr/bin/openssl /usr/bin/openssl.bak
# 創(chuàng)建符號(hào)鏈接以關(guān)聯(lián)新安裝的 OpenSSL 可執(zhí)行文件
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
# 向動(dòng)態(tài)鏈接庫(kù)配置文件添加新的 OpenSSL 庫(kù)路徑
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
# 使用 ldconfig 命令刷新動(dòng)態(tài)鏈接庫(kù)緩存,使新配置生效
ldconfig -v
6. 升級(jí) GCC 版本。
# 安裝 CentOS 軟件集和編譯工具鏈
yum install -y centos-release-scl
yum install -y devtoolset-8-toolchain
# 啟用新的工具鏈
scl enable devtoolset-8 bash
7. 編譯并安裝 Python 3.10。
cd Python-3.10.1
# 運(yùn)行 Python 配置腳本,配置編譯參數(shù)
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl --enable-shared --enable-optimizations
# 使用 make 命令編譯 Python 3.10 源代碼
# make 命令會(huì)根據(jù)配置參數(shù)編譯源代碼并生成可執(zhí)行文件
make
# 使用 make install 命令安裝 Python 3.10
# make install 會(huì)將編譯生成的 Python 可執(zhí)行文件、庫(kù)文件和其他必要文件安裝到指定目錄
make install
編譯安裝,速度慢,要等一會(huì)。
安裝完成后:

8. 創(chuàng)建軟鏈接以將 Python 3.10 與 python3 和 pip3 關(guān)聯(lián)。
# 備份系統(tǒng)默認(rèn)的 /usr/bin/python 可執(zhí)行文件
mv /usr/bin/python /usr/bin/python.bak
# 創(chuàng)建軟鏈接,將 /usr/local/python3/bin/python3 關(guān)聯(lián)到 /usr/bin/python3,使 python3 命令可用
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
# 備份系統(tǒng)默認(rèn)的 /usr/bin/pip 可執(zhí)行文件
mv /usr/bin/pip /usr/bin/pip.bak
# 創(chuàng)建軟鏈接,將 /usr/local/python3/bin/pip3 關(guān)聯(lián)到 /usr/bin/pip3,使 pip3 命令可用
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
9. 驗(yàn)證 Python 和 pip 版本。
# 向 /etc/ld.so.conf 文件中添加新的庫(kù)路徑
echo "/usr/local/python3/lib" >> /etc/ld.so.conf
# 使用 ldconfig 命令刷新動(dòng)態(tài)鏈接庫(kù)緩存,以使新配置生效
ldconfig -v
# 驗(yàn)證 Python 3.10 版本
python3 -V
# 驗(yàn)證 pip3 版本
pip3 -V
如果還是舊版本,8成是軟鏈接沒(méi)生效,ldconfig -v,刷新幾次即可
如果還不行,就是軟鏈接創(chuàng)建失敗,刪除舊的python3文件再試
刪除現(xiàn)有的 /usr/bin/python3 文件:sudo rm /usr/bin/python3
創(chuàng)建新的軟鏈接:ln -s /usr/local/python3/bin/python3 /usr/bin/python3
驗(yàn)證結(jié)果如下,即成功在centos服務(wù)器上部署了python 3.10.1

補(bǔ)充:pip的阿里云源
# 在當(dāng)前用戶目錄下創(chuàng)建 .pip 文件夾
mkdir ~/.pip
# 創(chuàng)建 pip 配置文件
vi ~/.pip/pip.conf
# 編輯文件內(nèi)容如下,指定使用阿里云的源
# [global]
# trusted-host=mirrors.aliyun.com
# index-url=http://mirrors.aliyun.com/pypi/simple/