zoukankan      html  css  js  c++  java
  • 记录一次CentOS环境升级Python2.6到Python2.7并安装最新版pip

    背景介绍

    一次实验中需要安装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]#

      

  • 相关阅读:
    不务正业系列-浅谈《过气堡垒》,一个RTS玩家的视角
    [LeetCode] 54. Spiral Matrix
    [LeetCode] 40. Combination Sum II
    138. Copy List with Random Pointer
    310. Minimum Height Trees
    4. Median of Two Sorted Arrays
    153. Find Minimum in Rotated Sorted Array
    33. Search in Rotated Sorted Array
    35. Search Insert Position
    278. First Bad Version
  • 原文地址:https://www.cnblogs.com/weifeng1463/p/8384228.html
Copyright © 2011-2022 走看看