CentOS6 Upgrade Python
时间:2022-05-06
本文章向大家介绍CentOS6 Upgrade Python,主要内容包括CentOS6 升级Python2.7.X和Python3.X、安装基本的开发工具包、安装Python pip、virtualenv和virtualenvwapper、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
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是无法正常工作的,所以我们需要编译成共享库。我们有两种方式编译成共享库:
- 在编译之前就指定相应的配置命令,LDFLAGS=”-Wl,-rpath /usr/local/lib”
- 打开/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。
- 浅谈非PE的攻击技巧
- hbase源码系列(十)HLog与日志恢复
- hbase源码系列(六)HMaster启动过程
- 如何写好一篇漏洞报告(国外篇)
- hbase源码系列(八)从Snapshot恢复表
- hbase源码系列(七)Snapshot的过程
- CVE-2017-3085:Adobe Flash泄漏Windows用户凭证
- hbase源码系列(九)StoreFile存储格式
- 如何确定恶意软件是否在自己的电脑中执行过?
- Carbondata源码系列(二)文件格式详解
- 挖洞经验 | 记一次针对Twitter(Periscope)API 的有趣挖洞经历
- 设计模式学习(二): 观察者模式 (C#)
- Carbondata源码系列(一)文件生成过程
- BoopSuite:基于Python编写的无线安全审计套件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- c++实例之通讯录管理系统之显示菜单和退出功能(一)
- c++实例之通讯录管理系统之添加联系人功能(二)
- c++实例之通讯录管理系统之显示联系人功能(三)
- c++实例之通讯录管理系统之删除联系人功能(四)
- springboot检索之Elasticsearch简介
- c++实例之通讯录管理系统之查找联系人功能(五)
- 【python-leetcode424-滑动窗口法】替换后的最长重复字符
- c++实例之通讯录管理系统之修改联系人功能(六)
- 解决arxiv.org打开pdf缓慢问题
- c++实例之通讯录管理系统之清空联系人功能(七)
- springboot任务之定时任务
- springboot检索之整合elasticsearch并使用jest操作
- springboot任务之邮件任务
- springboot安全之整合spring security实现(只有登录才有权限、不同用户显示不同内容、记住我)
- springboot任务之异步任务