CentOS7 python2升级到python3的那些坑

4 篇文章 0 订阅
3 篇文章 0 订阅

一)下载源代码

首先,要说明的是针对python,python.org是官方发布渠道,其他渠道都是转载转存。

其次,python对window/macos有安装包,但是linux版本需要自己去编译,意味着需要下载源代码,然后编译完成。最新的软件版在官方网站:这里有些同学会直接给一个地址,可能看到这个文章的时候版本已经升级了,因此我上面给图示,让大家自己去找下载地址。当然也保不齐网站样式变了,我的图也不准了。无论如何图如下,做参考:

最后,可以下载源代码了:

[XXXXX ~]# python -V
Python 2.7.5
[XXXXX ~]# cd /data/source/
[XXXXX ~]# ls
apache-tomcat-8.5.14-windows-x64.zip    libevent-2.0.22-stable.tar.gz  pcre-8.33.tar.gz
jdk-8u11-linux-x64.tar.gz               memcached-1.4.25.tar.gz        redis-3.0.5.tar.gz
jetty-distribution-8.1.9.v20130131.zip  nginx-1.3.9.tar.gz             zlib-1.2.8.tar.gz
jetty-distribution-9.3.6.v20151106.zip  openssl-1.0.1e.tar.gz

[XXXXX source]# wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
--2018-10-01 10:09:20--  https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
Resolving www.python.org (www.python.org)... 151.101.72.223, 2a04:4e42:1a::223
Connecting to www.python.org (www.python.org)|151.101.72.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22745726 (22M) [application/octet-stream]
Saving to: ‘Python-3.7.0.tgz’

100%[============================================================================>] 22,745,726  86.3KB/s   in 2m 47s 

2018-10-01 10:12:16 (133 KB/s) - ‘Python-3.7.0.tgz’ saved [22745726/22745726]

 

二)编译

tar xzvf Python-3.7.0.tgz

cd Python-3.7.0

mkdir /usr/local/src/python3   #这个是个人喜好放在这个目录

./configure --prefix=/usr/local/src/python3 --with-ssl    #python3 这里是一个坑,需要安装ssl的支持

make

make install

这一步可能遇到的问题:

zipimport.ZipImportError: can't decompress data; zlib not available

解决方法:

yum -y install zlib*

vi Modules/Setup

#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz   #去掉这个注释

make install   #过程中会进行zlib相关的编译

这一步还可能遇到的问题:

ModuleNotFoundError: No module named '_ctypes'

解决方案:

yum install libffi-devel -y

make install   #过程中会进行ctypes的相关编译

 

实际操作中,这个没有再出错了。

 

检查一下:

ls /usr/local/src/python3/bin

2to3              idle3    pip3.7    python3           python3.7m         pyvenv
2to3-3.7          idle3.7  pydoc3    python3.7         python3.7m-config  pyvenv-3.7
easy_install-3.7  pip3     pydoc3.7  python3.7-config  python3-config

要注意的是产生了:python3和pip3.7

/usr/local/src/python3/bin/python3 -V

Python 3.7.0

/usr/local/src/python3/bin/pip3 -V

pip 10.0.1 from /usr/local/src/python3/lib/python3.7/site-packages/pip (python 3.7)

这都OK了

 

三)进行链接替换,生效python3.7

检查系统的python是python2.7的内容

python -V

Python 2.7.5

which python

/bin/python

pip -V

pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)

which pip

/usr/pip

链接替换:

ln -s /usr/local/src/python3/bin/python3 /usr/bin/python -f

ln -s /usr/local/src/python3/bin/pip3 /usr/bin/pip -f

检查:

[root Python-3.7.0]# python -V
Python 3.7.0
[root Python-3.7.0]# pip -V
pip 10.0.1 from /usr/local/src/python3/lib/python3.7/site-packages/pip (python 3.7)
 

还需要补充一个easy_install的指向,要知道这个也是有版本区别的,在后续我们使用python3的时候,可能还需要用到,因此就需要进行链接切换:

ln -s /usr/local/src/python3/bin/easy_install /usr/bin/easy_install -f

 

实际上熟悉linux的同学知道这仅仅就是环境变量的切换,只是上面采用了覆盖python2的默认文件来实现这个python/pip/easy_install指向python3

方法很多,例如将/usr/local/src/python3/bin的路径放在PATH的最前面,等等。结果一样,就看自己要怎么使用了。

 

可以了大功告成????????

四)yum 的影响

yum的脚本是基于python2.x的,因此,这里将系统变量进行了python3的修改,那么就应该对yum的脚本做python2.x的指定

vim /usr/bin/yum

#!/usr/bin/python2.7

除了yum脚本以外,还有:

vim /usr/libexec/urlgrabber-ext-down

同样是进行指定python2.7

 

 

 

 

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值