让代码更简单

Centos7.X升级默认Python到3.X并安装pip3扩展管理

重要:本文最后更新于2021-03-04 21:15:01,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

Python是一个非常强大的工具,以前PHP的资源丰富,现在Python的资源更丰富,只需要引用扩展包,简单几句代码即可实现复杂功能,并且跨平台也较为方便。但是很多Linux系统自带的python版本比较老,我用过的几乎都是2.7.5这个版本,为了能跑上网络大神写的代码,我们有必要将python升级到3.X版本,下面是一次Centos7.2中python2.7.5升级到3.7.3并安装pip工具的完整安装过程,记录下来以便查阅。

如果想安装别的版本,请自己到python官网查找下载地址,官网:https://www.python.org

升级Python

查看当前版本

复制
python -V

wget下载python3.7.3源码包

复制
wget -c https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

解压

复制
tar -xzvf Python-3.7.3.tgz

进入目录

复制
cd Python-3.7.3

配置安装信息,这里直接默认,注意带上ssl支持

复制
./configure --with-ssl

安装openssl-devel支持

复制
yum install openssl-devel

编译并安装

复制
make && make install

注意:如果你的运气不好,在这一步将会报错,提示信息如下:

复制
Traceback (most recent call last):
  File "/root/Python-3.6.6/Lib/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/root/Python-3.6.6/Lib/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/root/Python-3.6.6/Lib/ensurepip/__main__.py", line 5, in <module>
    sys.exit(ensurepip._main())
  File "/root/Python-3.6.6/Lib/ensurepip/__init__.py", line 204, in _main
    default_pip=args.default_pip,
  File "/root/Python-3.6.6/Lib/ensurepip/__init__.py", line 117, in _bootstrap
    return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/root/Python-3.6.6/Lib/ensurepip/__init__.py", line 27, in _run_pip
    import pip._internal
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] 错误 1

原因是缺少依赖包,安装zlib依赖即可。

复制
yum -y install zlib zlib-devel

然后再次执行编译安装命令,自己看上面,这里不贴了。

当提示Successfully字样时,说明安装成功。

如果不出意外,你还会看到一个关于安装pip失败的错误信息,如下:

复制
File "/usr/local/python3/lib/python3.7/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'

原因是Python3中有个内置模块叫ctypes,它是Python3的外部函数库模块,它提供兼容C语言的数据类型,并通过它调用Linux系统下的共享库(Shared library),此模块需要使用CentOS7系统中外部函数库(Foreign function library)的开发链接库(头文件和链接库)。由于在CentOS7系统中没有安装外部函数库(libffi)的开发链接库软件包,所以在安装pip的时候就报了”ModuleNotFoundError: No module named ‘_ctypes'”的错误。

此时执行如下命令安装外部函数库(libffi)

复制
yum install libffi-devel -y

安装成功后再次执行编译安装命令,仍然不贴,自己看上面。

这次应该会成功安装了,到此你的系统中就已经安装上了python3.7.3版本,但默认仍然使用python2.7.5版本,因此我们还需要如下操作,修改默认的python版本。

查看旧版python安装位置

复制
whereis python
Centos7.X升级默认Python到3.X并安装pip3扩展管理

Centos7.X升级默认Python到3.X并安装pip3扩展管理

移动老版本

复制
mv /usr/bin/python /usr/bin/python2.7.5

重新指定python3.7链接到python命令

复制
ln -s /usr/local/bin/python3.7 /usr/bin/python

此时你的默认python就已经变成了3.7版本,输入如下命令查看版本

复制
python -V

修改yum使用的python路径

复制
vi /usr/bin/yum

将光标移至首行末尾,按“a”键,可以看到终端左下角出现–insert–字样,此时就可以插入内容了,将首行原来的#!usr/bin/python改为:

复制
#!/usr/bin/python2.7.5

按ESC退出编辑模式后,无视光标当前的位置,直接输入”:wq”,就完成保存并退出了。这里由于我将原来的2.7.5版本从/usr/bin/python移动到了/usr/bin/python2.7.5所以这样修改,如果移动到了其他位置,就要写对应的路径。

pip更新到3.7

先移除旧版本pip

复制
rm -f /usr/bin/pip

指定pip3.7链接到pip命令

复制
ln -s /usr/local/bin/pip3.7 /usr/bin/pip

输入pip不报错则安装完成,你也可以安装一个常用扩展看看是否有问题。

复制
pip install requests

感觉很棒!可以赞赏支持我哟~

1 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐