CentOS6 Upgrade Python

CentOS6 升级Python2.7.X和Python3.X


简述

由于产品需要从裸机开始开发所以所有的配置和开发也是从零开始,这个导航是基于centos6.x版本升级默认的Centos的Python,升级到Python2.7或者Python3.3。我们不仅升级了Python,同样基于Python的setuptools, pip, virtualenv and pyvenv这些工具也同样安装和升级以便于项目需要。

安装基本的开发工具包

为了确保编译Python成功,先安装下面的这几个package和类库。

yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

下面需要关心的两个问题:

  • Unicode 如果为了支持更多的编码字符集,可以采用UTF-32的编码能有更好的扩展性,好的扩展性是需要牺牲一部分内存。嘿嘿,所以占用的内存就比之前的多。在Python2.7.x版本支持标准是—enable-unicode=ucs4,在Python3.X版本中支持的标志是—with-wide-unicode
  • Shared library 你或许应该编译Python作为共享库,如果没有共享库的话有些第三方工具类库,比如:mod_wsgi和Blender是无法正常工作的,所以我们需要编译成共享库。我们有两种方式编译成共享库:
    1. 在编译之前就指定相应的配置命令,LDFLAGS=”-Wl,-rpath /usr/local/lib”
    2. 打开/etc/ld.so.conf,增加/usr/local/lib在末尾。然后运行/sbin/ldconfig确保动态链接改变成功。include ld.so.conf.d/*.conf /usr/local/lib
  • 使用make altinstall 预防出现问题 下载、安装和编译Python # Python 2.7.6: wget http://python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz tar xf Python-2.7.6.tar.xz cd Python-2.7.6 ./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib" make && make altinstall # Python 3.5.2: wget http://python.org/ftp/python/3.5.2/Python-3.5.2.tar.xz tar xf Python-3.5.2.tar.xz cd Python-3.5.2 ./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib" make && make altinstall

安装完成成功之后会分别在如下目录里面:/usr/local/bin/python2.7 或者 /usr/local/bin/python3.5,这样不会影响系统的默认python环境。当然你可以通过自定制你的Python为2.7,如果改变/usr/bin/python的默认python的话,请相应的修改yum源的Python。

安装Python pip、virtualenv和virtualenvwapper

安装pip

wget https://bootstrap.pypa.io/get-pip.py
python2.7 get-pip.py

安装virtualenv和virtualenvwapper

pip2.7 install virtualenv virtualenvwrapper
#.bash_profile
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh

并在/etc/sudoers设置如下:

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
如果你想让centos默认为python2.7可做如下设置
#1.将默认python重命名为Python2并替代Python2的软连接(Python2是Python的软连接)
 mv python python2
#2.新建默认Python2.7
ln -s /usr/local/bin/python2.7 python
#3.修改/usr/bin/yum的python解释器
nano /usr/bin/yum
修改 #!/usr/bin/python 为 #!/usr/bin/python2
#4.创建新的Python软连接
sudo ln -s /usr/local/bin/python2.7 python

到此你的所有安装已完毕并能正常使用Python。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯移动品质中心TMQ的专栏

手机管家PiTest插件辅助测试方法分享

背景 你是否遇到过这样的测试场景: 垃圾需要达到2G! Wifi必要有有风险! CPU占用率达到70%以上! 日流量使用占用套餐的一半! 你的QQ必须要有风险...

21660
来自专栏kl的专栏

DevOps自动化组件-RUNDECK介绍、开发、部署、使用

RunDeck 是用 Java开发的自动化部署持续集成的工具应用,项目已开源。runDeck的产品属性和jenkis类似。提供web界面和restapi来给用户...

1.1K90
来自专栏IT 指南者专栏

【SSH框架】之Struts2系列(一)

微信公众号:compassblog 欢迎关注、转发,互相学习,共同进步! 有任何问题,请后台留言联系 1、Struts2框架概述 (1)、什么是Struts2 ...

34070
来自专栏Linyb极客之路

分布式之数据库和缓存双写一致性方案解析

首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。

30210
来自专栏开发 & 运维分享

Zookeeper学习—— 简介

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为...

7610
来自专栏Java架构沉思录

谈谈HTTP状态保持

HTTP协议本身是无状态的,无状态的意思是浏览器发起的每个HTTP请求,对于服务端而言都是彼此独立的,即服务端无法直接通过HTTP协议将用户的多次HTTP请求联...

35060
来自专栏Java后端技术栈

分布式之数据库和缓存双写一致性方案解析!

首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作:

13930
来自专栏Java架构沉思录

缓存的正确使用方式,你都会了吗?

首先,缓存由于其适应高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。

14210
来自专栏Java技术栈

分布式Session共享解决方案

Session是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理。单机情况下,不存在Session共享的情况,分布式情况下,如果不进行Session...

38960
来自专栏腾讯移动品质中心TMQ的专栏

svn迁移至git指南

将代码从SVN迁移至Git时,若不关注SVN的历史提交记录,则直接将一份源代码提交至远端Git仓库即可;但对于大多数项目,历史提交则是对团队比较宝贵的记录,若要...

38920

扫码关注云+社区

领取腾讯云代金券