CentOS7系统现有python版本
我们先来查看一下安装的CentOS 7操作系统中python的版本情况。直接在命令行上输入python:
[cao@localhost ~]$ python
Python 2.7.5 (default, Apr 2 2020, 13:16:51)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
可以看到,Centos7系统目前自带python的版本为2.7.5。
同时可以使用linux命令whereis python来查看python安装路径:
[cao@localhost ~]$ whereis python
python: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz
鉴于python2版本已经得不到python社区的支持,而且大部分第三方库均支持python3(具体的说,有些库要求python3.5及其以上版本),因此在linux中使用python时还是需要升级到python3。
2. Python linux下载安装介质
这里的python3泛指python3.0以上版本,也就是非python2版本。不过受python语言版本的不断升级,在使用python3版本时我们一方面要使用较新的版本,同时也考虑其稳定性,因此这里我们将下载安装和使用python3.7版本。
下载方式有两种:可以直接在虚拟机里使用linux命令wget来下载,或者先从python官网上下载python linux版本,然后ftp上传到虚拟机里。两种方式对应的python程序下载地址均为:
需要提示的是,python的下载安装建议都使用超级管理员root账户来操作。
步骤1:先切换为root用户,使用yum工具安装wget
[cao@localhost ~]$ su -
Password:
Last login: Sat Jun 13 14:02:57 CST 2020 on tty1
[root@localhost ~]# yum install -y wget
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.huaweicloud.com
* extras: mirrors.huaweicloud.com
* updates: mirrors.huaweicloud.com
…… (省略中间过程)
Package wget-1.14-18.el7_6.1.x86_64 already installed and latest version
步骤2:使用wget来下载python3.7
[root@localhost ~]# wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
--2020-06-14 05:06:17-- https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
Resolving www.python.org (www.python.org)... 151.101.228.223, 2a04:4e42:1a::223
Connecting to www.python.org (www.python.org)|151.101.228.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22897802 (22M) [application/octet-stream]
Saving to: ‘Python-3.7.2.tgz’
100%[======================================>] 22,897,802 73.2KB/s in 3m 59s
2020-06-14 05:10:18 (93.8 KB/s) - ‘Python-3.7.2.tgz’ saved [22897802/22897802]
[root@localhost ~]# ll
total 22368
-rw-------. 1 root root 1431 Jun 10 21:05 anaconda-ks.cfg
-rw-r--r--. 1 root root 22897802 Dec 24 2018 Python-3.7.2.tgz
如果执行wget没有响应,说明是yum源的问题,需要替换centos默认自带的源。
首先备份自带的repo:
[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
然后使用curl命令下载网易镜像源:
[root@localhost yum.repos.d]# curl http://mirrors.163.com/.help/CentOS7-Base-163.repo -o CentOS7-Base-163.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1572 100 1572 0 0 13979 0 --:--:-- --:--:-- --:--:-- 14035
接下来运行makecache命令生成缓存:
[root@localhost yum.repos.d]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base extras updates
Cleaning up list of fastest mirrors
[root@localhost yum.repos.d]# yum makecache
升级yum操作:
[root@localhost yum.repos.d]# yum update –y
然后重新下载安装wget:
[root@localhost yum.repos.d]# yum install -y wget
3. Centos系统安装python3
首先解压python安装包:
[root@localhost ~]# tar -zxf Python-3.7.2.tgz
[root@localhost ~]# ll
total 22372
-rw-------. 1 root root 1431 Jun 10 21:05 anaconda-ks.cfg
drwxr-xr-x. 18 501 501 4096 Dec 24 2018 Python-3.7.2
-rw-r--r--. 1 root root 22897802 Dec 24 2018 Python-3.7.2.tgz
然后进入解压目录进行配置:
[root@localhost Python-3.7.2]# ./configure --with-ssl
执行编译和安装:
[root@localhost Python-3.7.2]# make
[root@localhost Python-3.7.2]# make install
上述四步一步步执行即可,正常情况下不会报错,如果在make install执行后出现了 ModuleNotFoundError: No module named ‘_ctypes’ 错误,则安装一下依赖库:
yum –y install libffi-devel tk-devel
安装好后,重新执行make intall即可。
4. Python3配置连接
4.1 设置python3的软连接
可以先使用whereis来查看python3通过编译安装后存放的路径。可以看出都在usr/local目录下:
[root@localhost ~]# whereis python3
python3: /usr/lib/python3.7 /usr/local/bin/python3.7m /usr/local/bin/python3.7 /usr/local/bin/python3.7m-config /usr/local/bin/python3 /usr/local/bin/python3.7-config /usr/local/lib/python3.7
然后进入/usr/bin目录先删除原有指向python2的软连接python,然后将python3.7与python建立软连接。
进入/usr/bin目录:
[root@ localhost bin]# pwd
/usr/bin
将原有python执行程序备份:
[root@ localhost bin]# mv python python-bk
添加python3.7的软连接:
[root@ localhost bin]# ln -s /usr/local/bin/python3.7 /usr/bin/python
4.2 验证python版本
验证python现在的版本:
[root@ localhost bin]# python -V
Python 3.7.2
退出root账户,在普通用户终端输入python:
[cao@localhost ~]$ python
Python 3.7.2 (default, Jun 14 2020, 05:36:10)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("hello")
hello
可以看到python3已经可以正常使用了。
4.3 解决yum安装解析问题
因为yum采用python作为命令解释器,现在设置了python3.7为/usr/bin/python的软连接,因此再运行yum时会报错:
[root@big01 ~]# yum
File "/bin/yum", line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax
此时需要取修改yum对应的解释器:进入root账户,编辑 vi /usr/bin/yum后:
将第一行语句#!/usr/bin/python 修改为 #!/usr/bin/python2.7
同时修改urlgrabber-ext-down 文件即: vi /usr/libexec/urlgrabber-ext-down,同样将第一行语句#!/usr/bin/python 修改为 #!/usr/bin/python2.7即可。
上述两个文件修改后,再来运行yum应该就正常了。