Python 3.8安装
前言
在 CentOS 系统上编译安装 Python 时,常常会遇到 _ssl 模块缺失 的问题,其根本原因在于 OpenSSL 版本过低。
本文将演示如何升级 OpenSSL 到 1.1.1k,并在此基础上编译安装 Python 3.8。
升级openSSL
Python 2.7 至 Python 3.6 需要 OpenSSL 0.9.8 至 1.0.2 版本。
Python 3.7 支持 OpenSSL 1.0.2 和 1.1.x 系列,但推荐使用 1.1.x。
Python 3.8 及之后的版本 需要 OpenSSL 1.1.1 或更高版本。
一、升级 OpenSSL
1. 查看系统 OpenSSL 版本
openssl version
# 例如显示 1.0.2,需要升级
2. 安装依赖库
sudo yum -y groupinstall "Development tools"
sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gdbm-devel db4-devel libpcap-devel xz-devel make
sudo yum -y install gcc gcc-c++ python-devel wget
3. 下载并编译 OpenSSL
mkdir -p /usr/local/ssl
cd /usr/local/ssl
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar -zxvf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k
./config --prefix=/usr/local/ssl/openssl shared zlib
make && make install
4. 替换系统旧版 OpenSSL
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/ssl/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/openssl/include/openssl /usr/include/openssl
echo /usr/local/ssl/openssl/lib >> /etc/ld.so.conf
ldconfig -v
5. 验证版本
openssl version
# OpenSSL 1.1.1k
二、安装 Python 3.8
1. 下载源码
mkdir -p /usr/local/python3
cd /usr/local/python3
wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz
xz -d Python-3.8.5.tar.xz
tar -xvf Python-3.8.5.tar
cd Python-3.8.5
2. 编译安装
./configure --prefix=/usr/local/python3/Python-3.8.5_build --enable-optimizations
make && make install
3. 建立软连接
rm -rf /usr/local/bin/python3.8
rm -rf /usr/local/bin/pip3.8
ln -s /usr/local/python3/Python-3.8.5_build/bin/python3.8 /usr/local/bin/python3.8
ln -s /usr/local/python3/Python-3.8.5_build/bin/pip3.8 /usr/local/bin/pip3.8
4. 验证
python3.8 -V
pip3.8 -V
Python 3.10安装
前言
Python 3.10 在功能和性能上比 3.8 有明显提升,但编译时更依赖 OpenSSL。
本文在 CentOS 上演示如何升级 OpenSSL 1.1.1k,并在其上编译安装 Python 3.10。
一、升级 OpenSSL
(步骤同 Python 3.8 文章,此处不再赘述)
确保执行:
openssl version
# 应显示 OpenSSL 1.1.1k 或更高版本
二、安装 Python 3.10
1. 下载源码
mkdir -p /usr/local/python3
cd /usr/local/python3
wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tar.xz
xz -d Python-3.10.9.tar.xz
tar -xvf Python-3.10.9.tar
cd Python-3.10.9
2. 编译安装(指定 OpenSSL 路径)
./configure --prefix=/usr/local/python3/Python-3.10.9_build --with-ssl=/usr/local/ssl/openssl --enable-optimizations
make && make install
3. 建立软连接
rm -rf /usr/local/bin/python10
rm -rf /usr/local/bin/pip10
ln -s /usr/local/python3/Python-3.10.9_build/bin/python3.10 /usr/local/bin/python10
ln -s /usr/local/python3/Python-3.10.9_build/bin/pip3.10 /usr/local/bin/pip10
4. 验证
python10 -V
pip10 -V
三、常见报错处理
1. pip 缓存权限问题
sudo chown -R ubuntu /home/ubuntu/.cache/pip/
sudo chown -R ubuntu /home/ubuntu/.cache/pip/http
2. 缺少 _ssl
模块
说明 OpenSSL 未正确安装或未指定 --with-ssl
,需重新配置编译。
<h1><a id="Python_38_0"></a>Python 3.8安装</h1>
<h2><a id="_2"></a>前言</h2>
<p>在 CentOS 系统上编译安装 Python 时,常常会遇到 <strong>_ssl 模块缺失</strong> 的问题,其根本原因在于 OpenSSL 版本过低。<br />
本文将演示如何升级 OpenSSL 到 1.1.1k,并在此基础上编译安装 Python 3.8。</p>
<p>升级openSSL</p>
<p>Python 2.7 至 Python 3.6 需要 OpenSSL 0.9.8 至 1.0.2 版本。<br />
Python 3.7 支持 OpenSSL 1.0.2 和 1.1.x 系列,但推荐使用 1.1.x。<br />
Python 3.8 及之后的版本 需要 OpenSSL 1.1.1 或更高版本。</p>
<h2><a id="_OpenSSL_13"></a>一、升级 OpenSSL</h2>
<h3><a id="1__OpenSSL__15"></a>1. 查看系统 OpenSSL 版本</h3>
<pre><div class="hljs"><code class="lang-shell">openssl version
<span class="hljs-meta"># </span><span class="language-bash">例如显示 1.0.2,需要升级</span>
</code></div></pre>
<h3><a id="2__22"></a>2. 安装依赖库</h3>
<pre><div class="hljs"><code class="lang-shell">sudo yum -y groupinstall "Development tools"
sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gdbm-devel db4-devel libpcap-devel xz-devel make
sudo yum -y install gcc gcc-c++ python-devel wget
</code></div></pre>
<h3><a id="3__OpenSSL_30"></a>3. 下载并编译 OpenSSL</h3>
<pre><div class="hljs"><code class="lang-shell">mkdir -p /usr/local/ssl
cd /usr/local/ssl
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar -zxvf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k
./config --prefix=/usr/local/ssl/openssl shared zlib
make && make install
</code></div></pre>
<h3><a id="4__OpenSSL_43"></a>4. 替换系统旧版 OpenSSL</h3>
<pre><div class="hljs"><code class="lang-shell">mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/ssl/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/openssl/include/openssl /usr/include/openssl
echo /usr/local/ssl/openssl/lib >> /etc/ld.so.conf
ldconfig -v
</code></div></pre>
<h3><a id="5__56"></a>5. 验证版本</h3>
<pre><div class="hljs"><code class="lang-shell">openssl version
<span class="hljs-meta"># </span><span class="language-bash">OpenSSL 1.1.1k</span>
</code></div></pre>
<hr />
<h2><a id="_Python_38_65"></a>二、安装 Python 3.8</h2>
<h3><a id="1__67"></a>1. 下载源码</h3>
<pre><div class="hljs"><code class="lang-shell">mkdir -p /usr/local/python3
cd /usr/local/python3
wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz
xz -d Python-3.8.5.tar.xz
tar -xvf Python-3.8.5.tar
cd Python-3.8.5
</code></div></pre>
<h3><a id="2__78"></a>2. 编译安装</h3>
<pre><div class="hljs"><code class="lang-shell">./configure --prefix=/usr/local/python3/Python-3.8.5_build --enable-optimizations
make && make install
</code></div></pre>
<h3><a id="3__85"></a>3. 建立软连接</h3>
<pre><div class="hljs"><code class="lang-shell">rm -rf /usr/local/bin/python3.8
rm -rf /usr/local/bin/pip3.8
ln -s /usr/local/python3/Python-3.8.5_build/bin/python3.8 /usr/local/bin/python3.8
ln -s /usr/local/python3/Python-3.8.5_build/bin/pip3.8 /usr/local/bin/pip3.8
</code></div></pre>
<h3><a id="4__95"></a>4. 验证</h3>
<pre><div class="hljs"><code class="lang-shell">python3.8 -V
pip3.8 -V
</code></div></pre>
<h1><a id="Python_310_104"></a>Python 3.10安装</h1>
<h2><a id="_106"></a>前言</h2>
<p>Python 3.10 在功能和性能上比 3.8 有明显提升,但编译时更依赖 OpenSSL。<br />
本文在 CentOS 上演示如何升级 OpenSSL 1.1.1k,并在其上编译安装 Python 3.10。</p>
<hr />
<h2><a id="_OpenSSL_113"></a>一、升级 OpenSSL</h2>
<blockquote>
<p>(步骤同 Python 3.8 文章,此处不再赘述)</p>
</blockquote>
<p>确保执行:</p>
<pre><div class="hljs"><code class="lang-shell">openssl version
<span class="hljs-meta"># </span><span class="language-bash">应显示 OpenSSL 1.1.1k 或更高版本</span>
</code></div></pre>
<hr />
<h2><a id="_Python_310_126"></a>二、安装 Python 3.10</h2>
<h3><a id="1__128"></a>1. 下载源码</h3>
<pre><div class="hljs"><code class="lang-shell">mkdir -p /usr/local/python3
cd /usr/local/python3
wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tar.xz
xz -d Python-3.10.9.tar.xz
tar -xvf Python-3.10.9.tar
cd Python-3.10.9
</code></div></pre>
<h3><a id="2__OpenSSL__139"></a>2. 编译安装(指定 OpenSSL 路径)</h3>
<pre><div class="hljs"><code class="lang-shell">./configure --prefix=/usr/local/python3/Python-3.10.9_build --with-ssl=/usr/local/ssl/openssl --enable-optimizations
make && make install
</code></div></pre>
<h3><a id="3__146"></a>3. 建立软连接</h3>
<pre><div class="hljs"><code class="lang-shell">rm -rf /usr/local/bin/python10
rm -rf /usr/local/bin/pip10
ln -s /usr/local/python3/Python-3.10.9_build/bin/python3.10 /usr/local/bin/python10
ln -s /usr/local/python3/Python-3.10.9_build/bin/pip3.10 /usr/local/bin/pip10
</code></div></pre>
<h3><a id="4__156"></a>4. 验证</h3>
<pre><div class="hljs"><code class="lang-shell">python10 -V
pip10 -V
</code></div></pre>
<hr />
<h2><a id="_165"></a>三、常见报错处理</h2>
<h3><a id="1_pip__167"></a>1. pip 缓存权限问题</h3>
<pre><div class="hljs"><code class="lang-shell">sudo chown -R ubuntu /home/ubuntu/.cache/pip/
sudo chown -R ubuntu /home/ubuntu/.cache/pip/http
</code></div></pre>
<h3><a id="2___ssl__174"></a>2. 缺少 <code>_ssl</code> 模块</h3>
<p>说明 OpenSSL 未正确安装或未指定 <code>--with-ssl</code>,需重新配置编译。</p>
评论区