0%

centos6安装python2.7

最近开始学习在centos上搭建nginx和django,但是centos6 自带的python2.6。但是基本无法运行django,所以需要安装python2.7。

nginx以及从源码编译好并且已经运行了,但是配合django使用的时候却出了点问题,具体怎么怎么用django搭建服务器可参考Setting up Django and your web server with uWSGI and nginx

  1. centos6安装python2.7并设置为默认python命令:
  • 下载python2.7.11后编译并安装:

    1
    2
    3
    4
    wget http://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.bz2
    tar jxvf Python-2.7.11.tar.bz2
    cd Python-2.7.11
    ./configure && make && make install

    安装好的2.7版本路径为**/usr/local/bin/python2.7**

  • 安装好后替换默认python
    先查看默认的python路径:

    1
    which python

    我这边的是位于**/usr/bin/python**,查看一下该文件并不是python2.6的链接文件,用diff命令看了下和同路径下的python2.6没有区别,所以可以直接删除或者重命名为python.bak

由于系统程序依赖2.6版本,所以先修改下依赖:

1
vim /usr/bin/yum

将其头部python改为**#!/usr/bin/python2.6**,运行下yum是否出错,不出错可以直接将python2.7设置为系统默认命令了:

1
ln -s /usr/local/bin/python2.7 /usr/bin/python

在执行下python –version看看是否已经是python2.7的了。

2.本以为这样就可以高枕无忧了,结果好多东西都得重新配置:

  • pip
    重新下载并配置:

    1
    2
    wget https://bootstrap.pypa.io/get-pip.py
    python get-pip.py
  • 重新安装virtualenv

    1
    pip install virtualenv
  • 运行django缺少_sqlite3:

    1
    ln -s /usr/lib/python2.6/lib-dynload/_sqlite3.so /usr/local/lib/python2.7/lib-dynload
  • 参考这里*

  • 再次运行还会出现个问题:
    “UnicodeDecodeError: 'ascii' codec can't decode byte”
    如果是使用virtualenv环境下操作的话,此时可以在**django/lib/python2.7/site-packages

  • *路径下新建名为sitecustomize.py的文件:

    1
    2
    3
    4
    5
    # encoding=utf8  
    import sys

    reload(sys)
    sys.setdefaultencoding('utf8')

    参考这里

Welcome to my other publishing channels