1. 安裝編譯 Python 所需的依賴包
yum -y install gcc make zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel wget
2. 安裝 OpenSSL 1.1.1 或更新版本
(自定義路徑安裝的 OpenSSL 1.1.1 不會影響系統原有的 OpenSSL 1.0.2,二者可共存)
# 下載 OpenSSL 1.1.1t 源碼包
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz
如果官網下載麻煩可直接用網盤下載:
鏈接: https://pan.baidu.com/s/1YFs5UC6nUh5ktCCk9Ln-Mg?pwd=nmnn
提取碼: nmnn?
# 解壓源碼包
tar -zxvf openssl-1.1.1t.tar.gz
# 進入解壓后的目錄
cd openssl-1.1.1t
# 配置編譯選項
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
# 編譯并安裝,make -j$(nproc) 利用處理器多核編譯加快編譯速度。
make -j$(nproc)
make install
# 更新系統庫路徑
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig
3. 創建 Python 安裝目錄(路徑根據實際情況修改)
mkdir -p /data/py/Python3
4. 下載 Python 3.10.11 源碼包
wget https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tgz
5. 解壓 Python 源碼包
tar -zxvf Python-3.10.11.tgz
cd Python-3.10.11
6. 配置 Python 編譯選項
./configure --prefix=/data/py/Python3 --with-openssl=/usr/local/openssl
7. 編譯并安裝 Python
make -j$(nproc)
make install
8. 設置環境變量
echo 'export PATH=/data/py/Python3/bin:$PATH' >> /etc/profile
source /etc/profile##如果不想取代系統原有的python3版本,可以通過添加軟連接方式,與系統自帶python3共存:
cd /usr/bin
ln -s /data/py/Python3/bin/python3.10 python310
ln -s /data/py/Python3/bin/pip3.10 pip310
9. 驗證 Python 安裝
python3 --version#如果是軟連接共存方式,則執行如下代碼
python310 --version
10. 驗證 SSL 模塊是否成功安裝
python3 -c "import ssl; print(ssl.OPENSSL_VERSION)"#如果是軟連接共存方式,則執行如下代碼
python310 -c "import ssl; print(ssl.OPENSSL_VERSION)"
11. 配置 pip 源(以阿里云源為例)
mkdir -p ~/.pip
cat << EOF > ~/.pip/pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/[install]
trusted-host = mirrors.aliyun.com
EOF
12. 更新 pip 到最新版本
pip3 install --upgrade pip#如果是軟連接共存方式,則執行如下代碼
pip310 install --upgrade pip
13. 測試安裝第三方庫
pip3 install requests
python3 -c "import requests; print(requests.__version__)"#如果是軟連接共存方式,則執行如下代碼
pip310 install requests
python310 -c "import requests; print(requests.__version__)"
按照以上步驟操作,你就可以在 CentOS 7.9 系統上成功安裝 Python 3.10.11 并包含 OpenSSL 支持,同時配置好 pip 源以便后續使用。