来博客园的第一篇博客,以后要坚持养成记录、分享的习惯啊,这样生活才会有痕迹~


服务器版本: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版本的方法大致分为两种:

  1. 直接创建python3软链,利用命令 python3 调用新版本python,与自带python不冲突
  2. 覆盖现有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版本的更多相关文章

  1. Linux系统下升级Python版本步骤(suse系统)

    Linux系统下升级Python版本步骤(suse系统) http://blog.csdn.net/lifengling1234/article/details/53536493

  2. Linux下升级python版本

    转载自:http://lovebeyond.iteye.com/blog/1770476 CentOS下的Python版本一般都比较低,很多应用都需要升级python来完成.我装的centOS的默认的 ...

  3. CentOS 6下升级Python版本

    CentOS6.8默认的python版本是2.6,而现在好多python组件开始只支持2.7以上的版本,比如说我今天遇到的pip install pysqlite,升级python版本是一个痛苦但又常 ...

  4. CentOS 7下升级Python版本到3.x系列

    由于python官方已宣布2.x系列即将停止支持,为了向前看,我们升级系统的python版本为3.x系列服务器系统为当前最新的CentOS 7.4 1.安装前查看当前系统下的python版本号 # p ...

  5. Ubutnu linux 下升级python版本,以2.x升级到3.x为例

    Linux操作系统一般 都会自带python,但是python版本会比主流低,故升级python, 主要思路:自带的python的链接link文件是在/usr/bin 下,采用sudo apt-get ...

  6. linux centos系统下升级python版本

    本文参考资料:https://www.cnblogs.com/leon-zyl/p/8422699.html,https://blog.csdn.net/tpc1990519/article/deta ...

  7. CentOS 7.x下升级Python版本到3.x系列(新老版本共存)

    由于python官方已宣布2.x系列即将停止支持,为了向前看,我们升级系统的python版本为3.x系列服务器系统为当前最新的CentOS 7.4 1.安装前查看当前系统下的python版本号 # p ...

  8. CentOS 7下升级python版本到3.X

    由于python官方已宣布2.x系列即将停止支持,为了向前看,我们升级系统的python版本为3.x系列服务器系统为当前最新的CentOS 7.4 1.安装前查看当前系统下的python版本号 # p ...

  9. 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.进行 ...

随机推荐

  1. Spring MVC-从零开始-view-ViewResolver

    主要ViewResolver简介 InternalResourceViewResolver 将逻辑视图名解析为一个路径 BeanNameViewResolver 将逻辑视图名解析为bean的name属 ...

  2. 10秒钟理解react生命周期

    慎点!这是一篇很水很水的文章, 抄自react中文文档, 本文详细介绍了react生命周期函数执行顺序, 以及各生命周期函数的含义和具体作用. 不同阶段生命周期函数执行顺序 挂载(Mounting) ...

  3. 前端防止url输入地址直接访问页面

    首先,解决这个问题要搞明白此url是从程序内部跳转还是直接在地址栏输入的,如果是程序内部跳转,那就好办啦.方法如下: 判断用户是否登录状态,是否携带token 使用router.beforeEach注 ...

  4. 向net core 3.0进击——April.WebApi从2.2爬到3.0

    目录 前言 升级之路 测试 小结 前言 在之前对Swagger的变化做了调整后,就开始想着要不把之前的工程升级得了,这样就还是个demo工程,来做各种测试(当然还是因为懒),这就有了今天这个比较折腾的 ...

  5. Hadoop 学习笔记之 Incompatible namespaceIDs问题

    Hadoop重新格式化后,仍然datanode启动失败,查看log: org.apache.hadoop.hdfs.server.datanode.DataNode: Java.io.IOExcept ...

  6. 初识TDD

    什么是 TDD ? TDD 有广义和狭义的区分. 广义角度指的是 ATDD(Acceptance Test Driven Development),包括 BDD(Behavior Driven Tes ...

  7. SpringCloud系列-整合Hystrix的两种方式

    Hystrix [hɪst'rɪks],中文含义是豪猪,因其背上长满棘刺,从而拥有了自我保护的能力.本文所说的Hystrix是Netflix开源的一款容错框架,同样具有自我保护能力. 本文目录 一.H ...

  8. SLAM中的卡方分布

    视觉slam中相邻帧特征点匹配时,动辄上千个特征点,匹配错误的是难免的,而误匹配势必会对位姿精度以及建图精度造成影响,那么如何分辨哪些是误匹配的点对儿呢?如果已知两帧的的单应矩阵,假设单应矩阵是没有误 ...

  9. MYSQL事件隔离级别以及复读,幻读,脏读的理解

    一.mysql事件隔离级别 1未提交读(READUNCOMMITTED) 另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据(脏读)( 隔离级别最低,并发性能高 ) 2 ...

  10. RF自定义库和关键字

    1:在D:\work_software\python\Lib\site-packages 文件夹下, 新建python package文件夹 ,例如我的是TestLibrary 建好后的完整路径:D: ...