CentOS8安装Python3.7

CentOS8安装Python3.7

由于 CentOS 8 的软件源中只有 Python 3.6,因此更高版本的 Python 需要自己编译安装。

安装编译工具

为了方便开发,直接安装开发工具包:

1
sudo dnf groupinstall 'development tools'

安装依赖包

1
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel xz-devel libffi-devel

-y 表示面对安装中的全部选择项,都选 yes;

全部依赖包中,zlib-developenssl-devellibffi-devel 必须得装,不然会安装失败

/(ㄒoㄒ)/~~

百度搜索可以发现,大部分教程还要安装两个依赖包:db4-devellibpcap-devel,但是可以发现它们不在 yum 中……

让你安装 db4-devel 是个坑,因为它在 CentOS 7 中就被移除了,使用 CentOS >=7 的我们根本不需要安装(https://forum.directadmin.com/threads/db4-devel-nog-available-in-centos-7-missing-pre-requisite.58414/)

libpcap-devel 需要用到 PowerTools 库:

1
2
3
4
sudo dnf -y install dnf-plugins-core
sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf config-manager --set-enabled PowerTools
sudo yum install libpcap-devel

(原因:https://bugzilla.redhat.com/show_bug.cgi?id=1707919;来源:https://computingforgeeks.com/enable-powertools-repository-on-centos-rhel-linux/)

下载并解压 Python 源码

选择合适的临时目录存放将要被编译的源码:

1
mkdir /home/<NAME>/soft && cd /home/<NAME>/soft

下载并解压:

1
2
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
tar -zxvf Python-3.7.9.tgz

配置编译参数

/usr/local 创建目录 python37/ 存放编译好的文件,然后进行编译设置:

1
2
3
mkdir /usr/local/python37
cd Python-3.7.9
./configure --prefix=/usr/local/python37 --enable-optimizations

--enable-optimizations 选项通过运行多次测试来优化 Python 二进制文件,这会使得构建过程慢得多。

构建并安装

1
make && make altinstall

altinstall:由于 CentOS 8 自带 Python-3.6,因此使用它避免覆盖默认的系统 Python 二进制包。

等待 30 min ~ 40 min :tea::tea::tea:

配置 ld.co.conf

1
2
3
4
5
vim /etc/ld.so.conf.d/python37.conf
*************** 写入 ***********************
/usr/local/python37/lib # 安装的路径
*************** 写入 ***********************
ldconfig # 启动配置

建立软链接

1
2
ln -s /usr/local/python37/bin/python3.7 /usr/local/bin/python
ln -s /usr/local/python37/bin/pip3.7 /usr/local/bin/pip

这里没有删除系统自带 Python-3.6 的链接,terminal 中输入 python3 还是可以进入 Python-3.6 。

更新 pip

1
pip3 install --upgrade pip

配置环境变量

1
export PATH=/usr/local/python37/bin:$PATH

附录

安装和配置 virtualenv

1
2
pip install virtualenv
ln -s /usr/local/python37/bin/virtualenv /usr/local/bin/virtualenv