Python安装升级——测试工程师Python开发实战(02)

发表于:2023-7-11 09:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:胡通    来源:51Testing软件测试网原创

#
Python
  1.2  Python安装升级
  转眼间现在Python都有3.10版本了,Python更新很快,Python的历史版本如图1-3所示。所以,本书中所有后续代码演示使用3.9版本,即图1-3中的3.9.8版本。
图1-3  Python的历史版本
  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所示。
  下面就将该Python 2.7.5升级到Python 3.9.8,主要步骤如下。
  (1)下载源码tar包。我们先从官网上下载Python 3.9.8的源码包,如图1-6所示,上传后进行离线安装。当然如果有外网,那直接通过wget命令即可下载。
图1-5  服务器操作系统默认Python版本
  (2)安装基础库。首先是需要在CentOS服务器上安装或更新一些基础库,例如gcc(提供源码编译环境)、zlib(提供多种压缩和解压缩的方式)、OpenSSL(一个强大的安全套接字层密码库,包括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议)。命令为yum install -y gcc zlib-devel zlib openssl-devel。其中,CentOS里使用yum作为包管理工具,-y选项表示不需要手动确认是否安装该指定包。
图1-6  Python 3.9.8的源码包
  (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版本进行安装。
  1.2.2  Python运行
  通常运行Python代码有两种方式,分别是交互式解释器和脚本文件。
  交互式解释器。在命令行窗口直接运行Python即可进入Python的交互式解释器。我们在上面编写代码后直接运行,即可看到结果。这种方式一般用于简单的脚本调试或验证。
  脚本文件。在命令行窗口运行python script-file.py即可运行Python脚本文件。通常用于运行较为复杂的代码内容。另外,使用脚本的方式运行代码通常要注意:在脚本文件头明确指定Python解释器和编码方式。
  1.3  pip管理工具包
  Python之所以受欢迎不仅是因为它简单易学,更重要的是它有非常多的宝藏工具。我们只要安装就能在Python里使用这些工具。它们可以处理各式各样的问题,无须我们再造轮子,而且随着社区的不断更新维护,有些工具越来越强大,几乎能媲美企业级应用。
  那么这些第三方工具如何下载安装呢?它们被放在一个统一的仓库—PyPI(Python Package Index)中。有了仓库,我们还需要有类似管理员的角色,pip就是这样一个角色。pip把工具包从PyPI中取出来,然后安装到我们使用的Python中,pip还可以管理安装完成的工具,实现更新、查看、搜索、卸载等操作。
  1.3.1  pip命令
  pip(package installer for python)是Python包管理工具。pip可以对Python的第三方工具进行安装、更新、卸载等操作,十分方便。
  其实pip是一个命令行程序,所以pip一般都在命令行中执行各种操作。pip命令组合比较灵活,下面重点介绍几个常用的。
  (1)install。安装命令为pip install <包名> 或 pip install -r requirements.txt(requirements.txt里面包含待安装的包信息)。唯一需要特殊说明的是,安装时可以指定版本号来安装,例如:
pip install SomePackage              # 最新版本
pip install SomePackage==1.0.4       # 指定版本
pip install 'SomePackage>=1.0.4'     # 最小版本
  (2)uninstall。卸载安装包命令为pip uninstall <包名>或pip uninstall -r requirements.txt。
  (3)升级包。命令为pip install -U <包名>或pip install <包名> --upgrade。
  (4)freeze。命令pip freeze用于查看已经安装的包及其版本信息,并支持导出到指定文件中,例如pip freeze > requirements.txt。
  (5)list。命令pip list用于列出当前已经安装的包。使用命令pip list -o可以查询可升级的包。
  (6)show。命令为pip show <包名>,用于显示包所在目录及信息。
  更多pip的命令行指令大家可以通过命令pip man进行查看。
  1.3.2  离线安装
  通常第三方工具的在线安装的方式比较简单,直接采用我们在1.3.1节介绍的pip命令即可。而很多时候,我们在开发过程中用自己的计算机安装了很多第三方工具,开发完成则需要部署到客户的环境中。若此时客户的环境不能联网,那么我们就需要采用离线的方式进行第三方工具的安装。
  第三方工具的离线安装的大致思路如下。
  (1)从可以联网的计算机上导出项目工程依赖的第三方工具的名称到1个空文件中。
  (2)下载指定的第三方工具安装包到指定文件夹。
  (3)将第三方工具名称文件和安装包拷贝到离线环境进行安装。
  具体操作步骤如下。
  (1)本地导出项目的第三方工具名称。进入本地项目,使用pip freeze > requirements.txt,导出相关第三方工具名称。
  (2)下载第三方工具到本地。将工具的安装包下载到本地指定文件,下载安装包的命令如下:
pip download -d your_offline_packages <package_name> # 下载单个离线包
pip download -d your_offline_packages -r requirements.txt # 批量下载离线包
  pip download是一个工具,可用于下载Python项目及其依赖项。执行pip download命令在Linux上下载一个项目,软件包将以.whl结尾,该软件包可以直接安装在Windows上,也可以安装在macOS上。wheel文件是工具的源文件,可以通过命令pip install×××××.whl直接安装。
  (3)离线安装。上传本地下载完成的所有第三方工具的源文件和依赖包的文件到远端服务器,然后使用如下命令进行离线安装:
pip install --no-index --find-links=/your_offline_packages/ package_name #安装单个离线包
pip install --no-index --find-links=/your_offline_packages/ -r requirements.txt # 批量安装离线包
  1.3.3  更换pip源
  很多人抱怨pip安装第三方工具有时太慢了,那是pip源的问题。pip默认从PyPI中下载工具安装包,但PyPI服务器在国外,我们访问PyPI服务器速度会很慢。目前,国内提供了很多镜像源,用来替代PyPI默认的地址,像清华源、豆瓣源、阿里云源等,这些镜像源备份了PyPI里的数据。这些镜像源的服务器在国内,所以我们的访问速度会快很多。通常有如下两种方式更换pip安装源。
  方式一:临时替换。参数-i用于指定下载源,如pip install -i https://pypi.tuna.tsinghua.edu.cn/simple cogdl。
  方式二:永远生效。在Linux下,修改~/.pip/pip.conf文件,若没有该文件就创建一个文件夹和文件,文件夹名称要加“.”,表示该文件夹是隐藏文件夹。修改内容如下,我们可以把index-url替换为自己想要修改的国内pip源地址。
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
版权声明:51Testing软件测试网获得作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号