CentOS7 下升级Python版本
来博客园的第一篇博客,以后要坚持养成记录、分享的习惯啊,这样生活才会有痕迹~
服务器版本:CentOS 7.3 64位
旧Python版本:2.7.5
新Python版本:3.8.0
说明:本次配置使用root用户进行操作,故在代码中未使用sudo语句,请使用非root用户留意
1、切换工作目录至/usr/local
在Linux系统下,路径/usr/local相当于C:/Progrem Files/,通常安装软件时便安装到此目录下。
执行命令:
cd /usr/local
2、下载目标python版本压缩包
执行命令:
wget http://npm.taobao.org/mirrors/python/3.8.0/Python-3.8.0.tgz
这里,我使用的是python在国内的镜像,若希望使用官网地址当然也是可以的,不过速度就两说了...
3、解压压缩包
执行命令:
tar -xzf Python-3.8..tgz
4、在当前目录下创建文件夹--python3
执行命令:
mkdir python3
5、编译与安装
执行步骤:
a.进入解压文件路径
cd Python-3.8.
b.生成makefile文件
./configure --prefix=/usr/local/python3
c. 对makefile文件进行操作
make
d.安装
make install
命令解释:
- 在Linux中通过源码安装程序时,对于解压文件,先执行./configure,后执行make,最后执行make install
make 命令 是对makefile文件操作,make install 是安装命令,那么 ./configure 是干什么呢?./configure 其实就是生成 makefile 文件
——参考“朝闻道”
- --prefix作用:编译的时候用来指定程序存放路径。
不指定prefix,可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share
指定prefix,直接删掉一个文件夹就够了
——参考“百度知道”
问题:
在这个过程中,出现了安装失败的问题:
zipimport.ZipImportError: can't decompress data; zlib not available
这是由于缺少依赖造成的,可执行以下代码:
yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
——参考“寒爵”
6、两种版本配置方法
关于配置python版本的方法大致分为两种:
- 直接创建python3软链,利用命令 python3 调用新版本python,与自带python不冲突
- 覆盖现有python,使其指向新安装的python,利用命令 python 便可调用新版本python
所涉及命令解释
- ln命令用来为文件创建链接,链接类型分为硬链接和符号(软)链接两种,默认的连接类型是硬连接。如果要创建符号链接必须使用"-s"选项,符号链接相当于Windows下的快捷方式,即可以实现启动python时指向python3.8
ln -s a b # 建立软连接,b指向a
——参考“颜子”
下面分别对两种方法进行介绍。
6.1直接创建python3软链
在/usr/bin路径下创建python3软链,指向已安装的python3
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
在/usr/bin路径下创建pip3软链,指向已安装的pip3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
此时系统中存在两个python版本:
命令 python 对应的仍是默认2.7版本
命令 python3 则对应新安装的3.8版本,
此本方法到此便结束了,可以快乐地打出 python3 -V, pip3 -V查看对应版本了
6.2 覆盖现有python,启动python时指向python3.8
备份旧python与pip
mv /usr/bin/python /usr/bin/python2_old
mv /usr/bin/pip /usr/bin/pip2_old #第三部分的文件名可根据本机版本修改
修改软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
此方法到这里已经完成一半啦,可以使用命令 python -V, pip -V查看版本
根据“撑起风帆”的经验,还应该对easy_install的指向进行修改,使用python3时可能会用到(未验证),用到时可根据上述“修改软链接”的方法进行修改
6.2.1 收尾工作
由于修改了python的版本,会导致一些依赖于旧版本的程序出现错误,如yum,可进行如下配置:
打开yum文件
vim /usr/bin/yum
文件第一行如下图:

将python修改为旧的版本号,此处添加2.7:

不过在安装软件时仍会报错:
SyntaxError: invalid syntax
File "/usr/libexec/urlgrabber-ext-down", line 28
except OSError, e:
还是因为python更换的原因, 依照上述操作修改文件即可:打开/usr/libexec/urlgrabber-ext-down 文件,将 #!/usr/bin/python 修改为 #!/usr/bin/python2.7
其他工具或库如果在安装过程中也报类似错误,同法处理。
此时系统仍存在两个python版本,但命令 python 对应的是新安装的3.8版本,命令 python2 才对应之前的默认2.7版本
此方法到这里就结束啦!
除文中所列参考文章外,主要参考文章还有:
https://blog.csdn.net/bawenmao/article/details/80216516
https://blog.csdn.net/u011798443/article/details/80825817
谢谢以上各位!
CentOS7 下升级Python版本的更多相关文章
- Linux系统下升级Python版本步骤(suse系统)
Linux系统下升级Python版本步骤(suse系统) http://blog.csdn.net/lifengling1234/article/details/53536493
- Linux下升级python版本
转载自:http://lovebeyond.iteye.com/blog/1770476 CentOS下的Python版本一般都比较低,很多应用都需要升级python来完成.我装的centOS的默认的 ...
- CentOS 6下升级Python版本
CentOS6.8默认的python版本是2.6,而现在好多python组件开始只支持2.7以上的版本,比如说我今天遇到的pip install pysqlite,升级python版本是一个痛苦但又常 ...
- CentOS 7下升级Python版本到3.x系列
由于python官方已宣布2.x系列即将停止支持,为了向前看,我们升级系统的python版本为3.x系列服务器系统为当前最新的CentOS 7.4 1.安装前查看当前系统下的python版本号 # p ...
- Ubutnu linux 下升级python版本,以2.x升级到3.x为例
Linux操作系统一般 都会自带python,但是python版本会比主流低,故升级python, 主要思路:自带的python的链接link文件是在/usr/bin 下,采用sudo apt-get ...
- linux centos系统下升级python版本
本文参考资料:https://www.cnblogs.com/leon-zyl/p/8422699.html,https://blog.csdn.net/tpc1990519/article/deta ...
- CentOS 7.x下升级Python版本到3.x系列(新老版本共存)
由于python官方已宣布2.x系列即将停止支持,为了向前看,我们升级系统的python版本为3.x系列服务器系统为当前最新的CentOS 7.4 1.安装前查看当前系统下的python版本号 # p ...
- CentOS 7下升级python版本到3.X
由于python官方已宣布2.x系列即将停止支持,为了向前看,我们升级系统的python版本为3.x系列服务器系统为当前最新的CentOS 7.4 1.安装前查看当前系统下的python版本号 # p ...
- Centos6.5下升级Python版本
Cenos6.5升级Python2.6到2.7 1.下载源码包 wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz 2.进行 ...
随机推荐
- spring5 源码深度解析-----ApplicationContext容器refresh过程
在之前的博文中我们一直以BeanFactory接口以及它的默认实现类XmlBeanFactory为例进行分析,但是Spring中还提供了另一个接口ApplicationContext,用于扩展Bean ...
- JS中如何防止表单重复提交问题
在登录页面html中写如下代码 <script type="text/javascript"> var issubmit=false; function dosubmi ...
- Spring 梳理 - @Component
使用@Component注解,表示该类定义为Spring管理Bean,使用默认value(可选)属性表示Bean标识符.如果不指定标识符,默认为首字母小写类名.例如类UserController的标识 ...
- Spring 梳理-@Controller
@Controller是一个构造性注解(stereotype),它基于@Component 在自动扫描中,组件扫描器会自动将@Controller申明的类注册为Spring应用上下文的一个bean 可 ...
- Python 设计和历史的 27 个问题
花下猫语: 先祝大家假期快乐!今天,我要分享一篇长文,选自 Python 的官方文档.它列举了 27 个设计及历史的问题,其中有些问题我曾经分享过,例如为什么使用显式的 self.浮点数的问题.len ...
- 极光推送消息——Alias别称方式(Andirod)
1.pom文件引入相关jar包 <!--极光推送消息start--> <dependency> <groupId>net.sf.json-lib</group ...
- 2017春季_京东_Java后端研发岗面经
纸上得来终觉浅,绝知此事要躬行 ——2017春季Java后端研发工程师面试心得 收获offer:上海汉得+北京中科软+成都百词斩+成都诺基亚研发中心+清华大学计算机研究所等offer.阿里一面猝.京 ...
- 【转+】python为什么推荐使用多进程
最近在看Python的多线程,经常我们会听到老手说:“Python下多线程是鸡肋,推荐使用多进程!”,但是为什么这么说呢? 要知其然,更要知其所以然.所以有了下面的深入研 ...
- PHP将base64数据流转换成图片并保存
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法.可查看RFC2045-RFC2049,上面有MIME的详细规范. Ba ...
- 第二篇:php开发工具
倍,这里为您介绍一些常用的工具. PHP IDE PHP IDE也不少,主要从几个方面进行筛选: 跨平台(能够同时在windows,mac或者ubuntu上面运行) 版本控制(SVN,GIT) 文件历 ...