差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

linux_basic:centos_7_upgrade_python2.7_to_python3.8 [2020/05/26 21:28] (当前版本)
root 创建
行 1: 行 1:
 +======centos 7升级Python2.7至Python3.8======
 +\\
 +\\
 +Python 2.7.5已于2020年初停止支持,而在centos 7中默认安装的是Python2.7.5,因此需要自己手动替换\\
 +\\
 +=====1:查看当前python版本=====
 +<​code>​
 +[root@centos Python-3.6.1]#​ python
 +Python 2.7.5 (default, Nov  6 2016, 00:​28:​07) ​
 +[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
 +Type "​help",​ "​copyright",​ "​credits"​ or "​license"​ for more information.
 +</​code>​
 +
 +以上输出Python 2.7.5表示当前版本,因为yum使用的是Python2.7因此不能删除,所以只能重新安装一个替换版本。\\
 +输入以下命令查看目前系统使用的Python以及安装目录,接下来将要对该目录下的Python进行修改\\
 +<​code>​
 +[root@centos ~]# which python
 +/​usr/​bin/​python
 +[root@centos ~]# ll /​usr/​bin/​python*
 +lrwxrwxrwx. 1 root root    7 May 30 05:52 /​usr/​bin/​python -> python2
 +lrwxrwxrwx. 1 root root    9 May 30 05:52 /​usr/​bin/​python2 -> python2.7
 +-rwxr-xr-x. 1 root root 7136 Nov  6  2016 /​usr/​bin/​python2.7
 +</​code>​
 +=====2:准备工作=====
 +首先安装以下组件,文后会有具体说明。若未安装则会在中途出现错误。
 +<​code>​
 +yum -y install gcc openssl-devel ​
 +</​code>​
 +=====3:下载安装Python3.8.3=====
 +[[https://​www.python.org/​downloads/​source/​|官网下载需要的Python版本]],此处以Python3.8.3为例\\
 +\\
 +<​code>​
 +wget https://​www.python.org/​ftp/​python/​3.8.3/​Python-3.8.3.tgz
 +tar xvf Python-3.8.3.tgz
 +mkdir /​usr/​local/​python3
 +cd Python-3.8.3
 +./configure --prefix=/​usr/​local/​python3
 +make
 +make install
 +</​code>​
 +=====4:检测是否成功=====
 +<​code>​
 +[root@centos ~]# /​usr/​local/​python3/​bin/​python3.8
 +Python 3.8.3 (default, May 26 2020, 12:35:02)
 +[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
 +Type "​help",​ "​copyright",​ "​credits"​ or "​license"​ for more information.
 +</​code>​
 +显示Python 3.8.3已安装成功并已可用。\\
 +=====5:替换旧Python=====
 +我们已经确认当前使用Python为2.7.5并且在/​usr/​bin目录下,接下来需要做的就是替换/​usr/​bin/​python,并更改yum使用的解释器,不然yum将无法使用\\
 +重命名当前Python,并将Python3.8.3软链接至/​usr/​bin/​python,建好后查看已经存在,并指向正确\\
 +<​code>​
 +mv /​usr/​bin/​python /​usr/​bin/​python.bak
 +ln -s /​usr/​local/​python3/​bin/​python3.8 /​usr/​bin/​python
 +</​code>​
 +\\
 +验证是否成功,直接输入python命令进行验证\\
 +<​code>​
 +[root@centos ~]# python
 +Python 3.8.3 (default, May 26 2020, 12:35:02)
 +[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
 +Type "​help",​ "​copyright",​ "​credits"​ or "​license"​ for more information.
 +</​code>​
 +=====6:解决升级Python后yum,Firewall等不能用的问题=====
 +我们需要将以下两个文件的抬头标识修改为原先的Python2.7版本\\
 +vi /​user/​bin/​yum\\
 +vi /​usr/​libexec/​urlgrabber-ext-down\\
 +<​code>​
 +将#! /​usr/​bin/​python2修改为
 +#! /​usr/​bin/​python2.7 即可
 +</​code>​
 +firewalld防火墙无法启动的情况下亦同上,修改以下三个文件的头部内容即可。\\
 +/​usr/​bin/​firewall-cmd\\
 +firewall-offline-cmd\\
 +/​usr/​sbin/​firewalld\\
 +\\
 +测试一下结果\\
 +<​code>​
 +[root@centos ~]# systemctl start firewalld.service ​
 +[root@centos ~]# systemctl status firewalld.service
 +● firewalld.service - firewalld - dynamic firewall daemon
 +   ​Loaded:​ loaded (/​usr/​lib/​systemd/​system/​firewalld.service;​ enabled; vendor preset: enabled)
 +   ​Active:​ active (running) since Tue 2020-05-26 20:40:38 UTC; 7h left
 +     Docs: man:​firewalld(1)
 + Main PID: 298 (firewalld)
 +   ​CGroup:​ /​system.slice/​firewalld.service
 +           ​└─298 /​usr/​bin/​python2 -Es /​usr/​sbin/​firewalld --nofork --nopid
 +
 +May 26 20:40:36 vps170872281.diahosting.com systemd[1]: Starting firewalld - dynamic firewall daemon...
 +May 26 20:40:38 vps170872281.diahosting.com systemd[1]: Started firewalld - dynamic firewall daemon.
 +May 26 20:40:38 vps170872281.diahosting.com firewalld[298]:​ WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be re...g it now.
 +Hint: Some lines were ellipsized, use -l to show in full.
 +</​code>​
 +没有问题,已可以正常使用。\\
 +=====7:检查其它可能存在的与原Python版本有关的文件=====
 +除此之外还有一些其他文件使用的Python,可以使用grep命令查看哪些文件使用了Python解释器\\
 +根据具体情况和需要进行修改。\\
 +以下方法查看/​usr/​bin目录下与python有关的文件\\
 +<​code>​
 +[root@centos ~]# grep -ai /​usr/​bin/​python /usr/bin/*
 +/​usr/​bin/​chardetect:#​!/​usr/​bin/​python
 +/​usr/​bin/​debuginfo-install:#​!/​usr/​bin/​python
 +/​usr/​bin/​find-repos-of-install:#​!/​usr/​bin/​python -tt
 +/​usr/​bin/​firewall-cmd:#​!/​usr/​bin/​python2.7 -Es
 +/​usr/​bin/​firewall-offline-cmd:#​!/​usr/​bin/​python2.7 -Es
 +/​usr/​bin/​msghack:#​!/​usr/​bin/​python
 +/​usr/​bin/​needs-restarting:#​!/​usr/​bin/​python -tt
 +/​usr/​bin/​package-cleanup:#​!/​usr/​bin/​python
 +/​usr/​bin/​pydoc:#​!/​usr/​bin/​python2.7
 +/​usr/​bin/​repo-graph:#​!/​usr/​bin/​python
 +/​usr/​bin/​repo-rss:#​!/​usr/​bin/​python
 +/​usr/​bin/​repoclosure:#​!/​usr/​bin/​python -t
 +/​usr/​bin/​repodiff:#​!/​usr/​bin/​python -tt
 +/​usr/​bin/​repomanage:#​!/​usr/​bin/​python
 +/​usr/​bin/​repoquery:#​!/​usr/​bin/​python -tt
 +/​usr/​bin/​reposync:#​!/​usr/​bin/​python -tt
 +/​usr/​bin/​repotrack:#​!/​usr/​bin/​python -tt
 +/​usr/​bin/​show-changed-rco:#​! /​usr/​bin/​python -tt
 +/​usr/​bin/​show-changed-rco:#​!/​usr/​bin/​python -tt
 +/​usr/​bin/​show-installed:#​!/​usr/​bin/​python
 +/​usr/​bin/​system-config-firewall-tui:#​!/​usr/​bin/​python
 +/​usr/​bin/​systemd-sysv-convert:#​!/​usr/​bin/​python
 +/​usr/​bin/​urlgrabber:#​!/​usr/​bin/​python -t
 +/​usr/​bin/​verifytree:#​!/​usr/​bin/​python -tt
 +/​usr/​bin/​yum:#​!/​usr/​bin/​python2.7
 +/​usr/​bin/​yum-builddep:#​!/​usr/​bin/​python -tt
 +/​usr/​bin/​yum-config-manager:#​!/​usr/​bin/​python -tt
 +/​usr/​bin/​yum-debug-dump:#​!/​usr/​bin/​python -tt
 +/​usr/​bin/​yum-debug-restore:#​!/​usr/​bin/​python -tt
 +/​usr/​bin/​yum-groups-manager:#​!/​usr/​bin/​python -tt
 +/​usr/​bin/​yumdownloader:#​!/​usr/​bin/​python
 +</​code>​
 +
 +=====8:中途可能出现的错误=====
 +进行configure 安装时,可能会出现以下错误提示则表示系统没有安装gcc\\
 +configure: error: no acceptable C compiler found in $PATH
 +执行<​code>​yum -y install gcc</​code>​
 +\\
 +make install过程中出现以下错误提示:\\
 +FAIL: test_with_pip (test.test_venv.EnsurePipTest)\\
 +zipimport.ZipImportError:​ can't decompress data; zlib not available\\
 +出现这种错误一般因为Python的安装环境没有安装好,安装以下软件\\
 +<​code>​yum -y install openssl-devel</​code>​
 +如果还是有报错则安装Development tools\\
 +<​code>​yum groupinstall Development tools</​code>​
 +安装成功后make clean以下,再重新进行make install即可。
 +\\
 +
  
最后更改: in 2020/05/26 21:28