CentOS6.6 系统自带的 Python 版本是 Python2.6,但项目需要 Python2.7。

升级 Python2.6 到 Python2.7

  • 下载 Python源码包
    curl https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz > Python-2.7.13.tgz
    tar -zxvf Python-2.7.13.tgz -C /opt/
    
  • 安装 Python
    cd /opt/Python-2.7.13
    ./configure
    make &&  make install
    

    默认安装在 /usr/loca/python2.7 目录下,也可以通过参数配置来指定安装路径 ./configure --prefix=/path/to/install/python
    安装完之后,系统默认的 Python 版本还是 Python2.6 的,需要修改:

    rm -f /usr/bin/python
    ln -s /usr/local/bin/python /usr/bin/python
    

    修改完之后,发现 yum 工具用不了了,因为 yum 工具是基于 Python2.6 的。将 /usr/bin/yum 的头部 #!/usr/bin/python 改为 #!/usr/bin/python2.6

安装 pip

cd /opt/
curl https://bootstrap.pypa.io/get-pip.py > get-pip.py
python get-pip.py
  • 如果出现错误:

    zipimport.ZipImportError: can’t decompress data; zlib not available

    是因为系统缺少了 zlibzlib-devel 库。

    yum install -y zlib zlib-devel
    

    安装成功之后,需要重新编译 Python:

    cd /opt/Python-2.7.13/
    make clean && make && make install
    # 重新编译完成之后再试一次安装 pip
    python get-pip.py
    
  • 如果接着出现错误:

    Could not fetch URL https://pypi.python.org/simple/pip/: There was a problem confirming the ssl certificate: Can’t connect to HTTPS URL because the SSL module is not available. – skipping

    是因为系统缺少 openssl-devel

    yum install -y openssl-devel
    

    安装成功之后,需要重新编译 Python:

    cd /opt/Python-2.7.13/
    make clean && make && make install
    # 重新编译完成之后再试一次安装 pip
    python get-pip.py
    

    到这里,我就成功安装了 pip。


总结 update.sh

#!/bin/sh

set -e
# 先安装需要的库:
yum install -y gcc zlib zlib-devel openssl-devel
# 下载 Python2.7 的源包
curl https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz > Python-2.7.13.tgz
tar -zxvf Python-2.7.13.tgz -C /opt/
# 安装 Python
cd /opt/Python-2.7.13
./configure
make &&  make install
# 修改系统默认的 Python 版本
rm -f /usr/bin/python
ln -s /usr/local/bin/python /usr/bin/python
# 将 `/usr/bin/yum` 的头部 `#!/usr/bin/python` 改为 `#!/usr/bin/python2.6`
sed -i '1c #!/usr/bin/python2.6' /usr/bin/yum
# 接着安装 pip
cd /opt/
curl https://bootstrap.pypa.io/get-pip.py > get-pip.py
python get-pip.py

pip 安装

  • Ubuntu
    sudo apt-get install python-pip // python2/python2.7
    sudo apt-get install python3-pip // python3/python3.4等等
    
  • 安装包
    # 下载安装包
    wget https://bootstrap.pypa.io/get-pip.py
    # 安装,如安装在 python2.7,安装完之后可以在 python2.7/bin/ 目录下看到 pip/pip2/pip2.7
    python2.7 get-pip.py
    # 如果环境变量中没有,添加到 /usr/bin
    ln -s xx/python2.7/bin/pip2.7 /usr/bin/pip2.7
    

pip 使用

pip <command> [option]
  • 安装包:pip install SomePackage[==1.0 / >= 1.0]
    默认安装 latest version,也可以指定版本或大于/小于哪个版本

  • 升级包:pip install --upgrade SomePackage
    假如当前环境的 pip 是 python2 的,想要升级 pip3(python3 的pip):pip3 install --upgrade pip

  • 卸载包:pip uninstall SomePackage

  • 查看包:pip show SomePackage

  • 搜索包:pip search XX

  • 列出包:pip list

  • 列出需要更新的包:pip list --outdated


ubuntu15.10 系统自带了很多版本的 python(python2、python2.7、python3、python3.4、python3.5等等),我们想要安装 Django:

sudo pip install Django // python2 / python2.7
sudo pip3 install Django // python3 / python3.4,不知道为什么并没有安装到python3.5

像上面那样,利用 pip3 来安装 Django,在 python3.5 里面没有安装到,这时候,我们可以一个一个地安装,方法如下:

各个版本的 python 利用 pip 来安装各种包:

  • Linux pythonXX -m pip install SomePackage
    python2 -m pip install SomePackage
    python2.7 -m pip install SomePackage
    python3 -m pip install SomePackage
    python3.5 -m pip install SomePackage
    
  • Windows py -XX -m pip install SomePackage
    py -2 -m pip install SomePackage
    py -2.7 -m pip install SomePackage
    py -3 -m pip install SomePackage
    py -3.5 -m pip install SomePackage
    

Ubuntu 下升级 python 的各种包:

python -m pip install --upgrade SomePackage