背景介绍

一次实验中需要安装python-etcd包。安装这个包时要求的python和pip版本比目前系统的版本高。

系统是centos6.6    64位

1
2
3
4
5
6
7
[root@minion01 ~]# uname -r
2.6.32-504.el6.x86_64
[root@minion01 ~]# uname -m
x86_64
[root@minion01 ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@minion01 ~]#

使用pip安装python-ectd包时提示命令找不到,需要先安装python-pip,pip是python的包管理工具

1
2
3
4
5
6
[root@minion01 ~]# pip install python-etcd
-bash: pip: command not found
[root@minion01 ~]# yum install python-pip -y
Installed:
  python-pip.noarch 0:7.1.0-1.el6     此处省略安装过程    
[root@minion01 ~]#      

继续安装python-ectd,提示pip版本太低,需要先升级pip。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@minion01 ~]# pip install python-etcd
/usr/lib/python2.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
You are using pip version 7.1.0, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting python-etcd
/usr/lib/python2.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
  Downloading python-etcd-0.4.3.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 20, in <module>
      File "/tmp/pip-build-dByULi/python-etcd/setup.py", line 12, in <module>
        if sys.version_info.major == 2:
    AttributeError: 'tuple' object has no attribute 'major'
     
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-dByULi/python-etcd

按照上面的提示先升级pip

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@minion01 ~]# pip install --upgrade pip
You are using pip version 7.1.0, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
/usr/lib/python2.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. <br>This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
Collecting pip
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 46kB/s
Installing collected packages: pip
  Found existing installation: pip 7.1.0
    Uninstalling pip-7.1.0:
      Successfully uninstalled pip-7.1.0
Successfully installed pip-9.0.1

继续执行命令,提示python版本太低

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@minion01 ~]# pip install python-etcd
DEPRECATION: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of pip will drop support for Python 2.6
Collecting python-etcd
  Using cached python-etcd-0.4.3.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-okuCUU/python-etcd/setup.py", line 12, in <module>
        if sys.version_info.major == 2:
    AttributeError: 'tuple' object has no attribute 'major'
     
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-okuCUU/python-etcd/

查看当前系统默认的python版本

1
2
[root@minion01 ~]# python -V
Python 2.6.6

下载并解压python2.7.10

新建一个tools目录用于存放下载的tar包,下载并解压,命令如下

1
2
3
4
5
6
[root@minion01 ~]# mkdir /tools -p
[root@minion01 ~]# cd /tools
[root@minion01 tools]# wget http://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz
[root@minion01 tools]# unxz Python-2.7.10.tar.xz
[root@minion01 tools]# tar -xf Python-2.7.10.tar
[root@minion01 tools]# cd Python-2.7.10

配置编译参数

1
[root@minion01 Python-2.7.10]# ./configure --enable-shared --enable-loadable-sqlite-extensions --with-zlib

修改一个文件

1
2
[root@minion01 Python-2.7.10]# vim ./Modules/Setup
找到#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz去掉注释并保存,然后进行编译和安装

编译和安装

1
[root@minion01 Python-2.7.10]# make && make install

查看安装后的结果,备份原先的可执行文件,给新的文件做软链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@minion01 Python-2.7.10]# ll /usr/local/bin/
total 48
-rwxr-xr-x 1 root root   101 Dec 19 13:29 2to3
-rwxr-xr-x 1 root root    99 Dec 19 13:29 idle
-rwxr-xr-x 1 root root    84 Dec 19 13:29 pydoc
lrwxrwxrwx 1 root root     7 Dec 19 13:29 python -> python2
lrwxrwxrwx 1 root root     9 Dec 19 13:29 python2 -> python2.7
-rwxr-xr-x 1 root root  9776 Dec 19 13:29 python2.7
-rwxr-xr-x 1 root root  1687 Dec 19 13:29 python2.7-config
lrwxrwxrwx 1 root root    16 Dec 19 13:29 python2-config -> python2.7-config
lrwxrwxrwx 1 root root    14 Dec 19 13:29 python-config -> python2-config
-rwxr-xr-x 1 root root 18547 Dec 19 13:29 smtpd.py
[root@minion01 Python-2.7.10]# mv /usr/bin/python  /usr/bin/python_bak
[root@minion01 Python-2.7.10]# ln -s /usr/local/bin/python2.7 /usr/bin/python

再次查看版本,遇到如下报错,修改配置文件

1
2
3
4
5
6
7
8
9
10
[root@minion01 Python-2.7.10]# python -V
python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
<br>编辑配置文件,添加新的一行内容/usr/local/lib,保存退出
[root@minion01 Python-2.7.10]# vim /etc/ld.so.conf<br><br>查看添加后的结果,在第一行
[root@minion01 Python-2.7.10]# cat /etc/ld.so.conf
/usr/local/lib
include ld.so.conf.d/*.conf<br><br>执行ldconfig加载配置
[root@minion01 Python-2.7.10]# ldconfig<br><br>再次执行查看版本命令,正确显示
[root@minion01 Python-2.7.10]#  python -V
Python 2.7.10

再次执行安装python-ectd,有报错。pip有问题

1
2
3
4
5
6
[root@minion01 tools]# pip install python-etcd
Traceback (most recent call last):
  File "/usr/bin/pip", line 7, in <module>
    from pip import main
ImportError: No module named pip
[root@minion01 tools]#

为了解决上面问题,手动安装pip,依次执行下面命令

1
2
3
4
5
[root@minion01 Python-2.7.10]# cd ..
[root@minion01 tools]# wget https://bootstrap.pypa.io/get-pip.py
[root@minion01 tools]# python get-pip.py
[root@minion01 tools]# mv /usr/bin/pip  /usr/bin/pip_bak
[root@minion01 tools]# ln -s /usr/local/bin/pip2.7 /usr/bin/pip

再次安装python-ectd,成功执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
再次安装python-etcd,成功了
[root@minion01 tools]# pip install python-etcd
Collecting python-etcd
  Using cached python-etcd-0.4.3.tar.gz
Collecting urllib3>=1.7.1 (from python-etcd)
  Downloading urllib3-1.19.1-py2.py3-none-any.whl (104kB)
    100% |████████████████████████████████| 112kB 65kB/s
Collecting dnspython (from python-etcd)
  Downloading dnspython-1.15.0-py2.py3-none-any.whl (177kB)
    100% |████████████████████████████████| 184kB 68kB/s
Building wheels for collected packages: python-etcd
  Running setup.py bdist_wheel for python-etcd ... done
  Stored in directory: /root/.cache/pip/wheels/a4/72/72/513173535d5ec25c11dbb53ce7c53c92746bff62b362a402a7
Successfully built python-etcd
Installing collected packages: urllib3, dnspython, python-etcd
Successfully installed dnspython-1.15.0 python-etcd-0.4.3 urllib3-1.19.1
[root@minion01 tools]#

  

记录一次CentOS环境升级Python2.6到Python2.7并安装最新版pip的更多相关文章

  1. python2和python3同时存在如何安装和使用pip

    linux下 如果没有pip则需要安装pip python2安装pip sudo apt install python-pip1如果是python3,则如下: sudo apt install pyt ...

  2. CentOS环境 升级Python2.6.6至2.7.5

      1.查看当前Python版本 # python -V Python 2.6.6 # python -V Python 2.6.6 2.下载Python2.7.5源码 # wget http://p ...

  3. CentOS 5升级Python版本(2.4>2.7)

    安装SALT时,需要这样作,公司有一批REDHAT5的,弄起来... 然后却是: Missing Dependency: python(abi) = 2.6 is needed by package ...

  4. 在阿里云的CentOS环境中安装django

    购买了一台阿里云主机.操作系统为CentOS 6.5.准备在上面跑Django做Web开发.因为CentOS自带的python版本号较低,安装Django先要安装新版本号python.还是费了点周折. ...

  5. centos环境的python、scrapy部署

    1 操作系统 Centos 6.5 64bit 或以上版本 2 软件环境 提示:(1)用什么软件:(2)运行环境(3)开发包. Python:Python-2.7.6.tgz Scrapy:Scrap ...

  6. CENTOS 7 升级安装 Python 3.5

    写在前面的话 本文采取源码的方式安装 Python 3.5.2,如果是其它版本会有或多或少的差异,且写这篇的时候官网最新的是 Python 3.7,个人使用 3.5 就足够了,没必要更新到最新,否则出 ...

  7. CentOS环境安装python3,pip

    安装python3(编译安装) 1. 下载python安装包到指定目录 cd /usr/local/src 这里的目录如果不存在可以自己建,当然也可以自己放在自己想放的位置,只要等会儿安装的时候能找到 ...

  8. Apache Superset1.2.0教程(四)—— CentOS环境安装

    前文中,我们已经在windows环境进行了superset的安装,也对图表功能进行了展示.但是在平时使用以及生产环境中,还是需要在centos环境下进行操作. 本文将带大家详解在centos7环境进行 ...

  9. centos 7 升级后yum install出现Exiting on user cancel

    centos 7 升级后yum install出现Exiting on user cancel centos 7.x升级后用yum install进行安装时经常出现Exiting on user ca ...

随机推荐

  1. php 使用 ffmpeg 转换视频,截图,并生成缩略图

    http://blog.csdn.net/toss156/article/details/7003059 把ffmpeg 和  生成缩略图整合了一下. include("ImageResiz ...

  2. 跟版网 > 织梦教程 > 织梦安装使用 > 织梦DedeCMS附件上传大

    织梦DedeCMS附件上传大小受限制,超过2M就不能上传了,针对此问题按如下方法修改: 1.进入后台→系统设置→系统基本参数→会员设置→会员上传文件大小(K),改成你需要限制的大小: 2.在dede ...

  3. 【JDBC】Java 连接 MySQL 基本过程以及封装数据库工具类

    一. 常用的JDBC API 1. DriverManager类 : 数据库管理类,用于管理一组JDBC驱动程序的基本服务.应用程序和数据库之间可以通过此类建立连接.常用的静态方法如下 static ...

  4. asp.net -mvc框架复习(7)-基于MVC搭建用户登录项目框架

    整体框架: 一.搭建Model层 1.添加通用数据访问类 2.添加实体类(封装和传递数据,和数据库中数据表对应) 3.添加数据访问类(通常和实体类同名,但是后缀名发生改变) 二.搭建控制器层Contr ...

  5. java 三大框架

    SSH即:Spring.Struts.HibernateSpring:功能强大的组件粘合济,能够将你的所有的java功能模块用配置文件的方式组合起来(还让你感觉不到spring的存在)成为一个完成的应 ...

  6. 动态添加div及对应的js、css文件

    动态添加div及对应的js.css文件 在近期的项目开发中需要在首页中添加很多面板型的div,直接加载代码显得很繁琐,于是利用js封装一个动态添加div及其对应css文件和js文件的方法供大家参考使用 ...

  7. css超出内容以省略号显示

    控制只显示2行,并以省略号结束 text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-or ...

  8. Java基础——反射 reflect

    什么是反射 (1)Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称 ...

  9. 搭建Hadoop集群(centos6.7+hadoop-2.7.3)

    hadoop集群有三种运行模式:单机模式.伪分布模式.完全分布模式.我们这里搭建第三种完全分布模式,即使用分布式系统,在多个节点上运行. 1 环境准备 1.1 配置DNS 进入配置文件,添加主节点和从 ...

  10. 数据库分表之Mybatis+Mysql实践(含部分关键代码)

    2018年01月31日      随着我们系统用户数量的日增,业务数据处于一个爆发前,增长的数据量已经给我们的系统造成了很大的不确定.在上个周末用户量较多,并发较大的情况下,读写频繁的验证码表,数据量 ...