CentOS 7安装Python3详细过程

一 安装流程

自己安装的VM虚拟机,Python版本一开始默认都是python2.x:

[root@localhost ~]# 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.

但经常使用的都是Python3,所以,接下来手动安装python3,并且配置后使其可以并存使用。具体步骤如下(注意:这次所有的操作都是在root用户下进行的):

步骤一:查询现有python2安装路径(可忽略)

[root@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安装在/user/bin目录中

[root@localhost ~]# cd /usr/bin
[root@localhost bin]# ll python*
lrwxrwxrwx. 1 root root    7 3月  11 23:35 python -> python2
lrwxrwxrwx. 1 root root    9 3月  11 23:35 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 11月  6 2016 python2.7

可以看到,python指向的是python2,python2指向的是python2.7,因此我们可以装个python3,然后将python指向python3,然后python2指向python2.7,那么两个版本的python就能共存了。

步骤二:安装编译相关工具

# 把这个组下常用软件装好,如果要查看有什么工具可以使用:yum groupinfo Development tools
yum -y groupinstall "Development tools"

# 安装依赖包,CentOS里面是-devel,如果过是Ubuntu下安装则修改为-dev
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

# libffi是用于高级语言之间的相互调用的插件,不安装libffi会导致pip安装失败
yum –y install libffi-devel 

步骤三:下载Python3

# 切换到软件下载目录,我一般会把所有包都放这个目录下
cd /usr/local/src

# 下载Python3
wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz

步骤四: 安装Python3.5.3

依次执行下列代码即可

# 解压
tar -zxvf Python-3.5.3.tgz
# 切换至python目录
cd Python-3.5.3
# 创建python编译目录(没有会报错)
mkdir -p /usr/local/python3 
# 配置python安装目录,默认安装在/usr/local/bin/中
./configure --prefix=/usr/local/python3
# 编译安装
make && make install

注意:如果出现了“ModuleNotFound:No module named '_ctypes'”报错,那就是没有进行libffi-devel 安装!!!

步骤五:创建软连接

mv /usr/bin/python /usr/bin/python.bak
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

通过上述操作后,后续具体操作如下:

[root@localhost /]# python
Python 3.5.3 (default, Mar 18 2020, 21:23:13) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
[root@localhost /]# python2
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.
>>> 
[root@localhost /]# pip -V   # 操作python2
pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)
[root@localhost /]# pip3 -V  # 操作python3
pip 9.0.1 from /usr/local/python3/lib/python3.5/site-packages (python 3.5)

二 配置yum

这时候,我们输入一下yum,会发现yum已经不能正常使用:

[root@localhost /]# yum
  File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
                            ^
SyntaxError: invalid syntax

这是为什么呢?

因为yum是依赖python2.7的,我们上面把python改成了python3.5了,自然不能正常使用了。这时我们需要修改一下yum里的相关依赖,具体操作如下:

步骤一:

vim /usr/libexec/urlgrabber-ext-down

image

步骤二:对yum文件做相同修改

vi /usr/bin/yum

image

至此,python3开发环境就配置完成了。

三 补充

3.1 pip安装

在通过虚拟机安装CentOS 7后,发现并没有自带pip。安装pip步骤如下:

步骤一:安装拓展源

yum -y install epel-release

步骤二:安装pip

yum -y install python-pip

如果需要进行升级,可执行:

pip install --upgrade pip

验证pip是否可用,可执行安装命令:

pip install 包

在进行步骤二时报错:

Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again

解决办法:

vim /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
# 取消第三行注释,并注释第四行
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch 
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch

3.2 卸载python3

rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps   # 卸载pyhton3
whereis python3 |xargs rm -frv    # 删除所有残余文件
whereis python   # 查看现有安装的python
posted @ 2020-03-17 16:46  Joe1991  阅读(157)  评论(0)    收藏  举报