一、下载前准备工作

Centos 7操作系统上默认安装了python 2.7.5版本,但是python 2即将成为历史,python 3才是未来的主流,本文记录了笔者在Centos 7上安装python 3.8的过程,该过程在虚拟机和华为云服务器上均有实现,因此复现性应该较高。

image-20200408233920123

首先移动到/home/python目录下(当然没有python目录需要你自己创建):

image-20200408233821993

二、下载python 3.8压缩包

使用如下命令下载python 3.8:

wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz

如果提示-bash: wget: 未找到命令,需要先使用yum安装wget,命令如下:

yum -y install wget

然后再使用wget下载python,耐心等候。下载结果如下:

image-20200409000116440

三、解压缩安装包

通过以下命令解压缩下载的文件:

tar zxf Python-3.8.0.tgz

结果如下:

image-20200409000225233

解压后进入Python-3.8.0目录:

cd Python-3.8.0

四、安装前准备工作

因为编译 Python 源代码需要依赖于很多工具,所以得先准备一下,依次执行以下命令:

yum update -y

yum groupinstall -y 'Development Tools'

yum install -y gcc openssl-devel bzip2-devel libffi-devel

五、安装python 3.8

现在我们就可以安装python 3.8了,首先执行以下命令(注意,一定要在Python-3.8.0目录下执行该命令):

./configure prefix=/usr/local/python3 --enable-optimizations

–prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share,比较凌乱。

如果配置--prefix,如:./configure --prefix=/usr/local/python3可以把所有资源文件放在/usr/local/python3的路径中,不会杂乱.用了--prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个相同的操作系统机器即可.当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是make文件指定过uninstall.

--enable-optimizations是优化选项(LTO,PGO 等)加上这个 flag 编译后,性能有 10% 左右的优化,但是这会明显的增加编译时间,老久了.

./configure命令执行完毕之后创建一个文件 Makefile, 供下面的make命令使用,执行make install之后就会把程序安装到我们指定的文件夹中去。

make && make install

那么现在就安装好python 3了吗?很遗憾,答案是没有。因为系统默认使用的还是python 2。

image-20200409095259279

六、修改 python 2 链接

我们首先查看一下 Python 可执行文件的位置:

which python

然后切换到相应的目录:

cd /usr/bin

查看相关的python信息:

ls -la python*

image-20200409100038234

发现当我们执行python 命令时,系统指向python 2,然后python 2指向python 2.7,所以系统默认使用的python版本仍然是python 2。

首先将python 改名为 python.bak

mv python python2.bak

再次查看python相关信息:

image-20200409104304416

七、修改yum配置文件

进入目录/usr/bin,查看有关yum的文件:

ls -la yum*

image-20200409104700194

使用vi 进入文本编辑器(如果有多个yum配置文件,都要进去修改):

vi yum

点击i进入编辑模式之后将#!/usr/bin/python 改为#!/usr/bin/python2,按ESC退出编辑模式,输入:wq!保存修改退出。

同样进入文件 /usr/libexec/urlgrabber-ext-down 做同样修改。

八、配置python 3软链接

进入/usr/bin目录,配置软链接。在我看来,其实软链接就像Windows操作系统里的快捷方式,比如现在桌面上有一个图标叫python,现在你双击打开它,发现它打开的是Python 2,所以我们要配置其指向python 3。

ln -s /usr/local/python3/bin/python3.8 /usr/bin/python

配置后结果:

image-20200409112547644

ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip

如果提示/usr/bin/pip已经存在,可以使用rm删除,然后再进行配置。

配置后结果:

image-20200409112605079

当然,也可以配置一个pip3软链接。

ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3

九、结果

输入python --versionpip -V,结果如下:

华为云服务器:

image-20200409112429574

本地虚拟机:

image-20200409114032372

十、后记

如果遇到下载python 3安装包速度过慢,可以考虑先下载到本地,然后使用winscp等工具将安装包传输至Centos,然后开始安装。

在安装过程中,要记得拍摄快照,最好每一步结束后都拍摄一张快照,这样当哪一步出错时,可以回退到前一步骤,而不必重新安装。

其实整个安装步骤和Windows下安装软件一样,大致按照下载软件——安装软件——修改配置整个过程进行,由于Centos系统自带python 2,中间穿插了一些修改python 2配置信息的操作。

十一、参考资料

[1] 知乎作者-穆图: https://zhuanlan.zhihu.com/p/98299867

[2] https://liqiang.io/post/install-python3-8-in-centos-973bdb81

[3] CSDN用户- weixin_41917873https://blog.csdn.net/weixin_41917873/article/details/88211421

[4] CSDN用户-那一夜: https://blog.csdn.net/weixin_44247225/article/details/85246828

[5] 简书作者-徐代龙: https://www.jianshu.com/p/fe9b0fc127d4