CentOS 7 环境下编译安装 Python 3.7.4,与自带 Python 2.7 共存。不得不说安装这货挺累的。
编译安装Python 3.7.4
目前 Python 最新版为 Python 3.7.4,如果以后有新版本更新,基本也差不多,以下是编译安装 Python 3.7.4 方法,根据提示一行一个命令输入即可:
安装依赖
yum groupinstall -y "Development tools" && yum -y install wget libffi-devel zlib-devel ncurses-libs mysql-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel uuid-devel libuuid-devel
旧方法备忘▼展开
安装 OpenSSL 可能报错 You need Perl 5
需要安装 Perl 5,可以编译安装,官网方法:
wget https://www.cpan.org/src/5.0/perl-5.30.0.tar.gz
tar -xzf perl-5.30.0.tar.gz
cd perl-5.30.0
./Configure -des -Dprefix=$HOME/localperl
make
make test
make install
这个方法比较慢/累人,CentOS 建议 yum 安装:
yum install perl* ##这个命令基本上把 Perl 模块安装齐全。
yum install cpan ##有需要可以把这个也安装上
安装完成后 pip 提示没有可用 SSL,无法访问 https 协议源
Python 编译时没有将 SSL 编译进去。安装符合要求 OpenSSL 版本,并在 ./configure 时添加 --with-ssl 参数。下面是编译安装 OpenSSL 1.1.1c(生产环境慎折腾):
cd /root
wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz && tar zvxf openssl-1.1.1c.tar.gz && cd openssl-1.1.1c
./config -fPIC --prefix=/usr/ --openssldir=/usr/openssl enable-shared shared zlib
make -j24
make install
如无意外,安装成功,执行 openssl version
可以看到版本号 OpenSSL 1.1.1c 28 May 2019
安装 Python 3.7.4
cd /root && wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz && tar zvxf Python-3.7.4.tgz && cd Python-3.7.4
./configure
make -j24
make install
如无意外,安装完成,输入命令 python3 -V 就能看到版本号。如果要使用系统 Python 2.7,直接输入 python xxx 即可,两者互不影响。
旧方法备忘▼展开
cd /root
wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz && tar zvxf Python-3.7.4.tgz && cd Python-3.7.4
./configure --prefix=/usr/local/python3 --enable-optimizations --enable-shared --enable-profiling --with-ssl
make -j24
make install
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
如果执行 python3 -V 提示如下错误:
python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory
进入 Python-3.7.4 源码目录,如这里是 /root/Python-3.7.4,执行一次下面的命令就可以:
cp libpython3.7m.so.1.0 /usr/lib64
至此,Python-3.7.4 安装完毕。
BuyVM 和 DigitalOcean CentOS Linux release 7.6 系统测试通过。
参考资料
始终 - 于 CentOS 7 上编译安装 Python 3.7.2
能折腾!网上其实有相关的源的,搜索一下就很容易发现,简单省事。自己编译的可能会某些 flag 没打开导致部分功能无法使用。
@zhiwei 确实,一键包比较省事,自己折腾太累。
不折腾,不铁血。
@郑永 开始折腾还是挺麻烦的,后来看别人的一键脚本,安装起来就方便/快很多。