修改 CentOS 6.x 上默认Python的方法


Posted in Python onSeptember 06, 2019

最近在工作中遇到一个问题,就是有一个功能希望在各种服务器上实现,而服务器上的系统版本可能都不一样,有的是 CentOS 6.x,有的是 CentOS 7.x 。

需要说明的一点是,CentOS 6.x 上的 Python 版本是 2.6.x 的,而 CentOS 7.x 上的 Python 版本是 2.7.x 的,这意味着我要实现的功能要适配这两种版本的系统。

你可能会说,这有什么的,自己写的时候,注意一下就好了。

事情其实没有那么容易,我要实现的功能是基于一个框架进行定制,需要修改不少的框架代码。这个框架在不同的 Linux 版本上,是有不同的版本的,而且差异巨大,曾经想过在 CentOS 6.x 和 CentOS 7.x 将这个框架安装成同一个版本,最后还是失败了,无法安装,原因就是高版本需要 Python2.7,而 CentOS 6.x 上只有 Python2.6。

这个历史问题一直遗留到现在,由于这次的功能影响到的代码较多,如果要对两个版本的框架分别进行定制的话,需要花不少的时间,为了不维护两套版本,避免浪费多余的精力去做适配,我决定将 CentOS 6.x 上默认的 Python2.6 升级成 Python2.7。

下面是整个升级过程,别看步骤简单,这些精简步骤的背后可是有不少的坑,被我踩过后,你可以直接使用了。

首先确认下你机器上的默认的 Python 版本

$ python -V
Python 2.6.6

$ whereis python
python: /usr/bin/python /usr/bin/python2.6 /usr/lib/python2.6 /usr/lib64/python2.6 /usr/local/bin/python /usr/include/python2.6 /usr/share/man/man1/python.1.gz

由于我们将使用编译安装的方式,所以要安装下 gcc,及一些工具包。

注意一定要全部安装,不然后面会发现有不少 python 的工具用不了。

比如不安装 zlib 会无法安装 setuptools,不装 openssl 和 openssl-devel,会无法使用 pip 工具等

$ yum install gcc -y
$ yum groupinstall "Development tools"
$ yum install zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel -y

如果你这里未按照我的步骤来安装,你后面使用的时候出现了各种各样的问题,不要慌,只要再回来这里,把没安装的包装上,安装完成后,你需要进入第四步重新编译安装Python。

下载最新的 Python2.7.x 安装包,解压并进入指定目录

$ wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz
$ tar zxvf Python-2.7.14.tgz
$ cd Python-2.7.14

配置,编译,安装

# --prefix 指定 python 安装的路径
$ ./configure --prefix=/usr/local/python/python2.7
$ make
$ make install

./configure 命令执行完毕之后创建一个文件creating Makefile,供下面的make命令使用 执行 make install 之后就会把程序安装到我们指定的目录中去。

Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure ?help输出详细的选项列表。其中 --prefix 选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在 /usr/local/lib ,配置文件默认放在 /usr/local/etc ,其它的资源文件放在 /usr /local/share 。如果配置 --prefix ,如: ./configure --prefix=/usr/local/test 可以把所有资源文件放在/usr/local/test的路径中,不会杂乱。

用了 --prefix 选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。当然要卸载程序,也可以在原来的make目录下用一次 make uninstall ,但前提是make文件指定过uninstall。

查看系统的 Python 版本

$ python -V
Python 2.6.6

如果你查看还是 Python 2.6.6 版本,请继续看第六步。

修改系统默认的 Python 版本

查看新安装的Python版本,当前系统的Python版本,并将系统指向的Python从2.6.x修改为2.7.x,再次查看当前系统的Python版本,已经变更为2.7.x

# 这是我们刚安装的 Python
$/usr/local/bin/python2.7 -V
Python 2.7.14

# 这是系统默认 Python
$ /usr/bin/python -V 
Python 2.6.6

# 备份原来的 Python 文件
$ mv /usr/bin/python /usr/bin/python.bak

# 建立软链接,将我们刚安装的 python2.7 做为系统默认版本
ln -s /usr/local/bin/python2.7 /usr/bin/python

# 再次查看 Python 版本,已经成功切换过来
$ python -V
Python 2.7.14

重新指定 yum 的Python版本

上面我们改了系统的默认 Python 版本,由于CentOS 6.x 的 yum 是基于Python2.6 的,为了不影响 yum 的使用,需单独将yum指向python2.6版本。

编辑: vim /usr/bin/yum ,将 /usr/bin/python 改成 /usr/bin/python2.6

#!/usr/bin/python2.6

安装 setuptools 及 pip

pip是python的安装工具,很多python的常用工具,都可以通过pip进行安装。要安装pip,首先要安装setuptools。从这个链接,你可以得到相关信息: https://pypi.python.org/pypi/...

# 下载 setuptools
$ wget https://pypi.python.org/packages/ff/d4/209f4939c49e31f5524fa0027bf1c8ec3107abaf7c61fdaad704a648c281/setuptools-21.0.0.tar.gz#md5=81964fdb89534118707742e6d1a1ddb4

同样的,进行安装:

$ tar vxf setuptools-21.0.0.tar.gz 
$ cd setuptools-21.0.0
$ python setup.py install

安装完成后,下载pip。其信息在如下网站: https://pypi.python.org/pypi/pip

# 下载 pip
wget https://pypi.python.org/packages/41/27/9a8d24e1b55bd8c85e4d022da2922cb206f183e2d18fee4e320c9547e751/pip-8.1.1.tar.gz#md5=6b86f11841e89c8241d689956ba99ed7

同样的,进行安装

$ tar vxf pip-8.1.1.tar.gz 
$ cd pip-8.1.1
$ python setup.py install

安装完成后,执行 pip list 查看一下安装的包,若无异常,则一切顺利。或者你也可以试着安装一下第三方包 pip install requests

总结

以上所述是小编给大家介绍的修改 CentOS 6.x 上默认Python的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python里对list中的整数求平均并排序
Sep 12 Python
python实现在目录中查找指定文件的方法
Nov 11 Python
Python2.x中str与unicode相关问题的解决方法
Mar 30 Python
Python的GUI框架PySide的安装配置教程
Feb 16 Python
Python实现随机生成有效手机号码及身份证功能示例
Jun 05 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
Jan 29 Python
Python使用微信接入图灵机器人过程解析
Nov 04 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
Feb 07 Python
python如何快速生成时间戳
Jul 21 Python
python 图像增强算法实现详解
Jan 24 Python
JAVA SpringMVC实现自定义拦截器
Mar 16 Python
Python代理IP爬虫的新手使用教程
Sep 05 #Python
关于Python内存分配时的小秘密分享
Sep 05 #Python
python global关键字的用法详解
Sep 05 #Python
python requests证书问题解决
Sep 05 #Python
Python使用scipy模块实现一维卷积运算示例
Sep 05 #Python
Python图像处理模块ndimage用法实例分析
Sep 05 #Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
Sep 05 #Python
You might like
打造计数器DIY三步曲(上)
2006/10/09 PHP
PHP 强制下载文件代码
2010/10/24 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
php有道翻译api调用方法实例
2014/12/22 PHP
js事件(Event)知识整理
2012/10/11 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
使用js画图之饼图
2015/01/12 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
利用10行js代码实现上下滚动公告效果
2017/12/08 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
使用httplib模块来制作Python下HTTP客户端的方法
2015/06/19 Python
Python引用模块和查找模块路径
2016/03/17 Python
Python paramiko模块的使用示例
2018/04/11 Python
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
基于Python实现天天酷跑功能
2021/01/06 Python
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
Booking.com缤客中国:全球酒店在线预订网站
2020/05/03 全球购物
2014年个人债务授权委托书范本
2014/09/22 职场文书
优秀团员个人总结
2015/02/26 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android