Centos7自带python2.7,我们不对它进行升级,而是使用源码安装python3,让二者共存。
这样可以保证系统中使用python2.7的软件正常运行。
首先看看成功安装python3后,软链接的依赖关系,也包括python2.7的依赖关系:
[root@localhost ~]# ll /usr/bin/python*
lrwxrwxrwx. 1 root root 7 Jun 13 06:30 /usr/bin/python -> python2
lrwxrwxrwx. 1 root root 9 Jun 13 06:30 /usr/bin/python2 -> python2.7
-rwxr-xr-x. 1 root root 7216 Apr 9 10:31 /usr/bin/python2.7
lrwxrwxrwx. 1 root root 33 Jun 13 07:09 /usr/bin/python3 -> /usr/local/python3Dir/bin/python3
[root@localhost ~]#
一般使用python2.7的程序开头会这样写:
#! /usr/bin/python
而使用python3的程序开头会这样写:
#!/usr/bin/python3
或这样写:
#!/usr/bin/env python3
#!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器, #!/usr/bin/python3也是这个意思,相当于写死了python或python3的路径;
#!/usr/bin/env python3这种用法是为了防止操作系统用户没有将python3装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python3的安装路径,再调用对应路径下的解释器程序完成操作,推荐这种写法。
1、以Python-3.6.3.tgz为例描述安装过程:
下载源码包:
下载python3的源码包的地址:https://www.python.org/ftp/python/
# mkdir /usr/local/python3
# cd /usr/local/python3
# wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
解压缩,进入源码包目录:
# tar -zxvf Python-3.6.3.tgz
# cd Python-3.6.3/
编译、安装:
# ./configure --prefix=/usr/local/python3Dir
# make
# make install
make install的时候遇到了一个问题:
zipimport.ZipImportError: can’t decompress data; zlib not available
make: * [install] Error 1
从错误信息分析,就是缺少了zlib的解压缩类库,安装即可:
# yum -y install zlib*
然后重新 make install 安装python3就没问题了。
2、基本配置
创建软链接:
注意:不要覆盖原有的python软链接!!!否则许多依赖python的软件将无法使用。
# ln -s /usr/local/python3Dir/bin/python3 /usr/bin/python3
添加环境变量:
1)永久的添加系统的环境变量:
系统永久环境变量设置方法是修改
/etc/profile
文件。在文件末尾添加代码并保存。
也可以修改
/etc/environment
文件。
在/etc/profile文件末尾添加:
export PATH=$PATH:/usr/local/python3Dir/bin
部分系统需要系统重启后/etc/profile文件生效,source命令可以让环境变量立即生效。
2)永久地添加用户的环境变量:
用户级别永久环境变量需要修改当前用户的
~/.bashrc
文件。
也可以修改当前用户的
~/.bash_profile
文件。
同样将 export PATH=$PATH:/usr/local/python3Dir/bin 添加至文件末尾即可。
建议运行前先通过echo 命令检查是否生效。
3、检查是否安装成功:
查看版本:
[fxw1@localhost ~]$ python -V
Python 2.7.5
[fxw1@localhost ~]$ python3 -V
Python 3.6.3
[fxw1@localhost ~]$
运行程序:
[fxw1@localhost ~]$ python3
Python 3.6.3 (default, Jun 13 2019, 06:59:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("hello world!")
hello world!
>>> exit()
[fxw1@localhost ~]$