CentOS 6.X 自帶的python版本是 2.6 , 由於工作需要,很多時候需要2.7版本。所以需要進行版本升級。由於一些系統工具和服務是對 Python 有依賴的,所以升級 Python 版本需要注意。
升級步驟
如何歡樂的,沒有痛苦的升級python版本 ,往下看 …
1. 更新系統和開發工具集
更新指令,並安裝必要的開發工具,比如gcc等:
yum -y update
yum groupinstall -y 'development tools'
另外還需要安裝 python 工具需要的額外軟件包 SSL, bz2, zlib:
yum install -y zlib-devel bzip2-devel openssl-devel xz-libs wget
源碼安裝Python 2.7.x:
wget http://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz
unxz Python-2.7.10.tar.xz
tar -vxf Python-2.7.10.tar
如果系統沒有安裝xz軟件包或者tar軟件包,運行下面的命令安裝:
yum -y install xz
yum -y install tar
執行完以上命令會解壓得到Python-2.7.10這個文件夾,進入該目錄並執行以下命令進行配置。
./configure --enable-shared --enable-loadable-sqlite-extensions --with-zlib --prefix=/usr/local
其中 --enable-loadable-sqlite-extensions
是sqlite的擴展,如果需要使用的話則帶上這個選項。
之後執行:
vi ./Modules/Setup
找到 #zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
去掉註釋並保存,然後進行編譯和安裝。
make && make install
安裝好Python2.7之後我們需要先把Python2.6備份起來,然後再對yum的配置進行修改,如果不進行這一步操作的話,執行yum命令將會提示你Python的版本不對。
(1)執行以下命令,對Python2.6進行備份,然後爲Python2.7創建軟鏈接:
mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python
(2)然後編輯/usr/bin/yum
,將第一行的#!/usr/bin/python
修改成#!/usr/bin/python2.6.6
現在執行yum命令已經不會出現之前的錯誤信息了。
我們執行python -V查看版本信息,如果出現錯誤:
error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
編輯配置文件:
vi /etc/ld.so.conf
添加新的一行內容/usr/local/lib,保存退出,然後:
/sbin/ldconfig
/sbin/ldconfig -v
2. 安裝pip
下載最新版的pip,然後安裝。
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
查找pip的位置:
whereis pip
找到pip2.7的路徑,爲其創建軟鏈作爲系統默認的啓動版本。
ln -s /usr/local/bin/pip2.7 /usr/bin/pip
pip安裝完畢,現在可以用它下載安裝各種包了。
3. python命令行中backspace鍵出現^H的問題
我一直以來在遠程到 Linux 服務器使用其中的 Python、Perl、MongoDB 自帶的 shell 時,都會出現敲擊 Backspace 鍵刪除某些字符時,字符沒有被刪除,反而會出現 ^H,只能使用 Ctrl-W 來刪除整個單詞,非常影響效率,今天閒來無事又看了一遍 《Guide To Unix And Linux》,發現了這個問題的原因
先查看服務器上的 erase 信號的映射:
stty -a
會出現:
可以看出這裏的 erase 信號爲 ^?,而發送過去的卻是 ^H,這就是敲擊 Backspace 時爲什麼不會刪除字符而會顯示 ^H 的原因,如果要解決這個問題,可以使用 Ctrl-Backspace 鍵來發送 ^? 信號來刪除字符,但是這樣還是太麻煩了,需要用組合鍵,而最簡單的方法就是把 Linux 服務器中的 erase 信號設置爲 ^H:
stty erase ^H
再看一下 erase 信號的映射:
變爲 ^H 了,這樣就可以敲擊 Backspace 來刪除字符,但是這樣只是臨時的,系統重啓過後就會失效,可以把這條命令寫入家目錄下的 .bash_profile 文件中實現永久修改。