测试工程师Python开发实战
上QQ阅读APP看书,第一时间看更新

1.2.1 Python安装

本书中使用的服务器操作系统为CentOS Linux release 7.6.1810 (Core),其内核发行版本为3.10.0,如图1-4所示。

图1-4 服务器操作系统版本

在默认情况下,CentOS安装的Python版本为2.7.5,如图1-5所示。

图1-5 服务器操作系统默认Python版本

下面就将该Python 2.7.5升级到Python 3.9.8,主要步骤如下。

(1)下载源码tar包。我们先从官网上下载Python 3.9.8的源码包,如图1-6所示,上传后进行离线安装。当然如果有外网,那直接通过wget命令即可下载。

图1-6 Python 3.9.8的源码包

(2)安装基础库。首先是需要在CentOS服务器上安装或更新一些基础库,例如gcc(提供源码编译环境)、zlib(提供多种压缩和解压缩的方式)、OpenSSL(一个强大的安全套接字层密码库,包括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议)。命令为yum install -y gcc zlib-devel zlib openssl-devel。其中,CentOS里使用yum作为包管理工具,-y选项表示不需要手动确认是否安装该指定包。

(3)解压离线上传的Python源码压缩包,命令为tar –xvzf Python-3.9.8.tar.gz。

(4)新建Python的安装目录,命令为mkdir /usr/local/Python-3.9.8。

(5)配置安装Python的安装目录和生成makefile文件。先进入解压Python后的目录,然后执行configure命令,进行源码安装路径的配置,命令为./configure --prefix=/usr/local/Python-3.9.8/。常见选项为--prefix,用于指定安装的路径;--enable-optimizations是优化选项,加上这个选项编译后,性能可以优化10%左右(建议不要加,原因下面会提到)。

通常,Python 3.9.8配置成功的界面如图1-7所示。

图1-7 Python 3.9.8配置成功的界面

提示

遇到错误:在配置的时候加了--enable-optimizations,结果编译安装的时候出现“Could not import runpy module”的安装错误。

报错原因:默认CentOS的gcc编译器的版本为4.8.5,该版本过低。

解决方法:

升级gcc到高版本,gcc 8.1.0已修复此问题,但此方法会有兼容性问题;

./configure参数中去掉-enable-optimizations,建议用此方法。

(6)开始源码编译和安装,命令为make或make install。如果前面配置错误,重新配置后,要先执行make clean命令,清除上次的make命令所产生的object文件(扩展名为“.o”的文件)及可执行文件。另外,此步骤可能会消耗一定的时间,只要不报错,我们耐心等待即可。

若安装成功,还需安装或更新pip和setuptools这两个基础库,本书中使用的pip和setuptools版本如图1-8所示,这都是比较新的版本,所以暂时不更新。

图1-8 pip和setuptools版本

大家若想更新到最新版本,可下载最新版本,再传入无网的服务器环境并解压,解压后进入setuptools或pip目录,执行python setup.py install命令,即可完成更新安装。

(7)最后,进入/usr/local/目录可以看到已经安装成功,Python的安装目录如图1-9所示。

图1-9 Python的安装目录

(8)为了在任何目录下输入python命令都能执行,还需要做个软连接。首先备份原来的Python 2.7.5的默认解释器,命令为mv /usr/bin/python /usr/bin/python2.7.5。然后把新版本的Python 3.9.8进行软连接,命令为ln -s /usr/local/Python-3.9.8/bin/python3.9 /usr/bin/python。

(9)验证是否生效。在任何目录下,输入python,如图1-10所示则表示验证成功。

图1-10 验证成功

(10)确保升级Python版本后无异常。在后续使用CentOS的过程中,我们通过yum命令安装一些其他软件库的时候,可能会报异常“yum异常:File "/usr/bin/yum", line 30”。为了解决该问题,需要用vi命令打开/usr/bin/yum和/usr/libexec/urlgrabber-ext-down这两个文件,将第一行“#!/usr/bin/python”改为“#!/usr/bin/python2.7.5”,即使用原来服务器默认的Python版本。

yum

yum是基于Python编写的,采用Python作为命令解释器,这可以从/usr/bin/yum文件中第一行“#!/usr/bin/python”发现。而Python版本之间兼容性不太好,使得2.X版本与3.X版本之间存在语法不一致问题。CentOS 7自带的yum采用的是Python 2.7.5,因此当系统将Python升级到3.9.8版本后,会出现语法解释错误。

至此,我们完成了Python 3.9.8的离线方式的源码编译安装,大家可以根据自己需求选择任何Python版本进行安装。