Linux CentOS升级Python 3.7版本方法

96
MingSha
0.1 2018.04.18 07:58* 字数 484

背景: linux 的centos7 默认安装了 python2.7.5 , 需要升级到最新版本

最近给公司的一台闲置的电脑重新做了系统(CentOS 7.4),官网方链接已经没有了,网上好难找到了,最后在我移动硬盘中找到了这个珍藏版本,系统安装我就不多说了,下面讲讲如何处理升级之后无法启动面板的过程,因为Python2 和Python3 不兼容,而塔宝是使用Python2写的,导致升级Python3 之后面板无法启动了

安装Python 3.7

# 创建安装包目录,把3.7.0换为你要版本即可
mkdir -p /root/Downloads/python_install && cd /root/Downloads/python_install
# 下载
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
#解压源码包
tar -zxvf Python-3.7.0.tgz
#创建安装目录
mkdir /usr/local/python3
cd Python-3.7.0/
#安装到指定目录
./configure --prefix=/usr/local/python3
# 编译
make && make install
# 漫长的等待……

成功后创建软连接即可全局使用python3了

cd /usr/local/python3
ln -s /usr/local/python3/bin/python3 /usr/local/bin//python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3

出现问题:
1、CentOS7 升级Python3 之后塔宝面板打不开解决办法
这个时候好多人会用软链更更换Python版本,如果更换之后就其实宝塔面板还是正常运行的,但是当你重启服务器之后就gg了,如果你尝试重启面板会出现一下提示

[root@localhost ~]# service bt restart
Stopping Bt-Tasks... done
Stopping Bt-Panel... done
Starting Bt-Panel...   File "main.py", line 32
    except Exception,ex:
                    ^
SyntaxError: invalid syntax

failed
------------------------------------------------------
RuntimeError: Bad magic number in .pyc file
------------------------------------------------------

所以我们需要移除软链还原原来的Python版本

rm -rf /usr/bin/python
ln -s /usr/bin/python2.7 /usr/bin/python

这时候重启一下面板会看到

[root@localhost ~]# service bt restart
Stopping Bt-Tasks... done
Stopping Bt-Panel... done
Starting Bt-Panel... done
Starting Bt-Tasks... done

大家会说那怎么使用python3开发,命令行执行py文件之后使用python3命令即可
python3 xxxx.py

2、出现使用yum命令报错File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
问题如下:

这里写图片描述

问题出现原因:
yum包管理是使用python2.x写的,将python2.x升级到python3.1.3以后,由于python版本语法兼容性导致问题出现
解决办法:
修改yum配置文件,将python版本指向以前的旧版本

# vi /usr/bin/yum
#!/usr/bin/python2.7

修改urlgrabber-ext-down文件,更改python版本

# vi /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python2.7

3、ImportError: No module named '_sqlite3' in python3.7
先安装

yum install readline-devel
yum install tk-devel
yum install tcl-devel  
yum install openssl-devel   
yum install sqlite-devel 

然后重启编译python3

tar Jxvf  Python-3.7.0.tar.xz
cd Python-3.7.0
./configure --prefix=/usr/local/python3
make && make install

参考:
https://stackoverflow.com/questions/20126475/importerror-no-module-named-sqlite3-in-python3-3
https://my.oschina.net/bileel/blog/2222172

Python