Python升级和兼容性配置

Python里面有个现象很奇怪,一般要学习Python都会纠结是学习2和3,这个差别和纠结Java5和Java6是完全不一样的,因为Python里面的兼容性确实是个问题,在《流畅的Python》中写道:Guido(Python之父,仁慈的独裁者)在设计 Python3 的过程中,受一篇文章 “Python warts” 的影响,决定不向后兼容,否则无法修复大多数缺陷,然后Python很火,你要用Python,就得按照这个理念来。兼容性的问题到了开发者这里就是个大麻烦。

Python2和3的差别很大,其实不兼容也还可以理解,当做两个分支也行,但是2.6和2.7的差别竟然也不小。有时候部署环境还是很纠结的。比如操作系统中默认的Python版本是2.6,但是很多应用中的最低要求是2.7,所以就得纠结这个,为了应用还是得升级。

首先是下载个2.7的安装包。 wget http://python.org/ftp/python/2.7/Python-2.7.tar.bz2 --no-check-certificate

解压 使用的选项是-j 这个和其他压缩文件还是有些差别的。

tar -jxvf Python-2.7.tar.bz2

把解压的Python目录放到/user/local下面去。

mv Python-2.7 /usr/local/ 在源码包中,我们修改Modules/Setup.dist里面zlib的配置

把注释去掉。

zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

剩下的步骤就是编译安装了。

./configure make all

如果这个时候出现了make的错误,

make: *** [Modules/zlibmodule.o] Error 1

信息显示是和zlib相关的信息,得重新安装一个包zlib-devel

yum install zlib-devel

这个阶段最好,后面就很轻松了。

make all

make install make clean make distclean

安装步骤部署下来,目前的系统层面的Python还是默认的2.6,我们需要修改下默认的配置,把/usr/bin下面的链接改一下。

/usr/local/bin/python2.7 -V mv /usr/bin/python /usr/bin/python2.6_bak --备份一下原来的。

重新创建软链接 ln -s /usr/local/bin/python2.7 /usr/bin/python

[root@oel641 Python-2.7]# python -V Python 2.7 接下来就是yum的部分了,2.7版本中不兼容2.6的部分,我们就得修改下yum文件头,把python的版本指向2.6 比如修改文件/usr/bin/yum的头部内容为

#!/usr/bin/python2.6

接下来就是pip这样的工具了。

安装pip,先要配置setuptools,一步一步来,倒还不算麻烦。 wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg --no-check-certificate wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate -O - | python 然而如果后续你要安装一些Python的模块,比如psutil,mysql-connector的时候,使用yum安装就有问题了,因为yum基于的是python 2.6,在2.7的库文件里是没有的。一种解决方式就是下载源码包,源码安装。

折腾了一圈,终于可以使用psutil了,mysql-connector的配置也通了。

剩下的事情就是写一些简单的脚本或者拿来主义,借鉴别人好的脚本内容。调试一把,然后在这个基础上补充一些定制的内容就妥了。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2017-11-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏源码之家

DEDE整站动态化或整站静态(伪静态)设置方法

22040
来自专栏北京马哥教育

理解Inode

inode是什么 理解inode,要从文件储存说起。 文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5...

34650
来自专栏Spark学习技巧

Flink异步IO第一讲

Async I/O 是阿里巴巴贡献给社区的一个呼声非常高的特性,于1.2版本引入。主要目的是为了解决与外部系统交互时网络延迟成为了系统瓶颈的问题。

29540
来自专栏互联网杂技

为何webpack风靡全球?三大主流模块打包工具对比

前端的模块系统经历了长久的演变,对应的模块打包方案也几经变迁。从最初简单的文件合并,到AMD 的模块具名化并合并,再到browserify将CommonJS 模...

41080
来自专栏Java后端技术栈

缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题!

前面一节说到了《为什么说Redis是单线程的?》,今天给大家整理一篇关于Redis经常被问到的问题:缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等概念的入门...

45210
来自专栏北京马哥教育

Python与系统日常管理

大多时间都在linux下工作,虽说不算系统管理员,也免不了要处理许多系统相关的东西。对linux还算熟悉,偶尔也在公司客串系统管理员的角色。于是就免不了要写许...

41060
来自专栏FreeBuf

自己动手打造Github代码泄露监控工具

众说周知,Github这块肥肉很受安全人员和黑客关注。因为很多新进程序猿和老手不经意就会把他们的劳动成果分享出来,而往往这种开源精神,奉献精神会对企业带来一定的...

20920
来自专栏吾爱乐享

茉莉QQ机器人3.X系列插件开发文档

30320
来自专栏阮一峰的网络日志

理解inode

inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。 我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学...

38170
来自专栏Albert陈凯

zookeeper详解

Zookeeper--Zookeeper是什么 博客借鉴http://www.cnblogs.com/yuyijq/p/3391945.html​ Googl...

38530

扫码关注云+社区

领取腾讯云代金券