为了测试 mesos,搞了一个 centos7.1,使用最小化安装,然后自己安装了 net-tools,“开发工具”集。后来想装一下 DCOS Cli工具,结果发现 python 的 pip 不可用。

搜了一下,发现 Centos7自动的 python 版本为2.7.5,不带 openssl 加密,而要下载的东西都是 https 的,找了好久,希望能让 pip 忽略 https 的验证无果。查到一个信息,说是2.7.9以上版本自带了 openssl 插件。好吧,试试这个吧!

1、安装一堆需要的软件包,之所以搞了两天,完全是被这些坑的,一步一个坑啊!

yum -y install openssl openssl-devel ncurses-devel.x86_64  bzip2-devel sqlite-devel python-devel zlib

2、下载 python2.7.10源码包,解压到一个临时目录中,我就放在/tmp 下了

wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz

tar zxvf Python-2.7.10.tgz

3、编译

编译前,注意一下,configure时候要使用"--enable-shared",表示生成动态链接库。(不然后面编译mod_wsgi会出错)仅使用这一项也不够,开始仅使用--enable-shared选项,发现编译完成后,进入Python2.7.10目录,执行python、python2、python2.7在终端都是返回python2.7.5的提示符。所以,在执行configure命令的时候,还要加上"-rpath"选项,这个代表是否将生成的库安装在软件的安装目录,默认是在安装目录,否则自己指定路径。

先建立一个目录,不然后面configure的时候会出错:

mkdir -p /usr/local/python/2.7.10/lib

./configure --enable-shared --prefix=/usr/local/python/2.7.10 LDFLAGS="-Wl,-rpath /usr/local/python/2.7.10/lib"

make && make install && make clean

4、切换新版本

此处一定要把原来的 python2.7.5保留,我开始是直接覆盖了老版本,结果发现 yum 不能用了,费了无数劲,也没搞定,只好重装了系统,反正是测试的虚拟机(不过第二天找到修复的办法了)

mv /usr/bin/python /usr/bin/python2.7.5

ln -fs /usr/local/python/2.7.10/bin/python2.7 /usr/bin/python

5、解决 yum 的问题

因为yum需要使用Python2.7.5的版本,现在 yum 应该不能干活了,还有设置一下yum相关的文件,这样执行yum相关的命令时才不会出错。vi /usr/bin/yum,修改第一句,替换成保留的2.7.5的版本:

!/usr/bin/python2.7.5

看了很多人说改完上面的就万事大吉了,我修改了上面的之后,yum还是出问题,然后又根据出问题的部分修改了"/usr/libexec/urlgrabber-ext-down"下的第一句:

!/usr/bin/python2.7.5

果然熟悉的 yum 界面出来了!

5、安装 setuptools、pip

老版本的这些,都不能生效了,得重新装过,我在这遇到很多坑,菊花残,满身伤啊!

下载ez_setup.py文件,安装setuptools:

wget https://bootstrap.pypa.io/ez_setup.py

运行以下命令安装,因为之前没装 zlib-devel 模块,下面的命令执行不成功,没办法,yum install zlib-devel ,然后理新编译 python。

python ez_setup.py

下载pip源码,进入源码目录进行安装,这一步也因为第一步骤的相关组件没装,坑了半天

wget https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz#md5=3823d2343d9f3aaab21cf9c917710196

tar zxvf Python-2.7.10.tgz

cd Python-2.7.10

python setup.py install

增加一个软链接,这一步好象不是很必要:

ln -fs /usr/local/python/2.7.10/bin/pip /usr/bin/pip

本以为这样就万事大吉了,结果运行 pip,直接报错,又是因为依赖的组件没装。

最后再说一下,最好把新的 python 的路径加到 PATH 环境变量中,否则还会有其他组件运行不正常。

编译Python2.7.10的更多相关文章

  1. python2.7.10 VS2015编译方法

    打开 Python-2.7.10\PCbuild目录 然后设置只编译python和pythoncore: 好了,编译试一试. 出现了好几个错误.由于 VS2015 取消了 timezone 的定义,改 ...

  2. CentOS下升级python2.7.10过程记录

    1.准备好一份Python2.7.10源码包,下载地址: http://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz 2.安装Python2.7 ...

  3. Windows下编译Python2.7源码

    本文开始一个系列文章,深入理解Python源码,算是阅读<Python源码剖析>一书的读书笔记,是一项长期进行的工作.一共分三个部分:Python对象模型,Python虚拟机,Python ...

  4. Centos 安装 python2.7.10以及pip

    安装python2.7.10 1. 下载安装包并解压 wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz tar -xf P ...

  5. CentOS7 编译安装 nginx-1.10.0

    对于NGINX 支持epoll模型 epoll模型的优点 定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的 ...

  6. CentOS 7.2.1511编译安装Nginx1.10.1+MySQL5.7.14+PHP7.0.11

    准备篇 一.防火墙配置 CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.se ...

  7. CentOS 7.2.1511编译安装Nginx1.10.1+MySQL5.6.33+PHP5.6.26

    准备篇 一.防火墙配置 CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.se ...

  8. CentOS 7.x编译安装Nginx1.10.3+MySQL5.7.16+PHP5.2 5.3 5.4 5.5 5.6 7.0 7.1多版本全能环境

    准备篇 一.防火墙配置 CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.se ...

  9. mac上Python多版本共存(python2.7.10和python3.5.0)

    本文的实现目标是在mac上安装一个python3.5.0的版本,跟当前系统自带的python2.7.10共存. 查看当前版本号 python -V 2.7.10 安装配置Python版本管理器pyen ...

随机推荐

  1. IOUtils方式上传下载文件

    package com.css.hdfs04; import java.io.File; import java.io.FileInputStream; import java.io.FileOutp ...

  2. JavaWeb-Servlet-通过servlet生成验证码图片

    BufferedImage类 创建一个BufferImage servlet,用来生成验证码图片: package com.fpc; import java.awt.Color; import jav ...

  3. SpringBoot与Mybatis整合实例详解

    介绍 从Spring Boot项目名称中的Boot可以看出来,SpringBoot的作用在于创建和启动新的基于Spring框架的项目,它的目的是帮助开发人员很容易的创建出独立运行的产品和产品级别的基于 ...

  4. 1. testNG+Maven 环境搭建

    一:使用的工具 : TestNG 6.9.10 Maven 3.5 IDEA 二:创建maven项目,在pom.xml添加依赖 <?xml version="1.0" enc ...

  5. testng的@Factory及其与@DataProvider的区别

    Factory,顾名思意就是工厂,也就是工厂方法,在软件开发中一般结合多态使用,用来根据不同的条件创建不同的类对象. 在这里,Factory一般用来创建一个测试类的多个实例,每个实例属性不同,以执行不 ...

  6. java 多线程 day16 CountDownLatch 倒计时计数器

    import java.util.concurrent.CountDownLatch;import java.util.concurrent.CyclicBarrier;import java.uti ...

  7. 产品固件(系统)升级——curl/wget

    1.文件下载指令应用 支持断点续传 curl -C - -O "https://curl.haxx.se/download/archeology/curl-7.58.0.tar.gz&quo ...

  8. Vmwaretools

    先下载Vmwaretools  这一步是设置ubuntu的超级用户root的密码我设置为dong  转换为root用户操作 执行 perl程序 然后就是一路Enter,开始关机重启就行了 来自为知笔记 ...

  9. DEPHI XE5 XE6 ANDROID IOS开发的几点体会

    DEPHI XE5 XE6 ANDROID IOS开发的几点体会 2014-09-04 20:48 1.不纠结于APK或者APP的大小.现在的客户端设备都很廉价,300元以上的新安卓设备都不在乎软件的 ...

  10. 2017浙江省赛 C - What Kind of Friends Are You? ZOJ - 3960

    地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3960 题目: Japari Park is a large zoo ...