線上服務器Python版本默認是2.6,因爲業務程序要求,須要將Python升級到3.3.0, 操做記錄以下:python
Cenots6.8默認安裝的是2.6版本,要更新升級需安裝下gcc: [root@openstack ~]# yum -y install gcc bzip2 系統會自動下載安裝gcc 下載python 3.3.0 [root@openstack ~]# wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tar.bz2 解壓python 3.3.0 [root@openstack ~]# tar -jxvf Python-3.3.0.tar.bz2 進入目錄: [root@openstack ~]# cd Python-3.3.0 安裝python [root@openstack ~]# ./configure [root@openstack ~]# make all [root@openstack ~]# make install [root@openstack ~]# make clean [root@openstack ~]# make distclean 而後不要急着去python -V,這時候實際上你仍是發現是2.6.6 執行 [root@openstack ~]# mv /usr/bin/python /usr/bin/python.bak2.6 會問你是否overwrite2.6的配置,輸入y [root@openstack ~]# ln -s /usr/local/bin/python3.3 /usr/bin/python 這時候輸入python -V,應該是3.3.0了 [root@openstack ~]# python -V Python 3.3.0 舒適提示: python升級後, 必定要記得修改/usr/bin/yum和/usr/bin/pip文件頭部信息中的python版本. 不然yum和pip命令在python升級後將沒法使用. 須要將這兩個命令的二進制文件開頭的 #!/usr/bin/python 修改成: #!/usr/bin/python2.6 若是是centos7系統, 則/usr/libexec/urlgrabber-ext-down文件頭部信息中的python版本也要修改!
Python環境在從一臺機器遷移到另外一臺機器時, 對於那些依賴庫的作法:vim
1) 遷移前, 在原機器上執行"pip freeze",將顯示的python依賴的庫信息放倒python.txt文件裏 2) 將原機器的python.txt文件拷貝到要遷入的新機器上 3) 在新機器上執行"pip install -r python.txt" , 若是執行時出現超時報錯, 則須要加上"--index https://pypi.mirrors.ustc.edu.cn/simple/" 進行加速, 即: "pip install -r python.txt --index https://pypi.mirrors.ustc.edu.cn/simple/"
Python升級後的幾個小問題centos
1)python升級帶來的yum異常:File "/usr/bin/yum", line 30 緣由:這是由於yum採用Python做爲命令解釋器,這能夠從/usr/bin/yum文件中第一行#!/usr/bin/python發現。 而python版本之間兼容性不太好,使得2.X版本與3.0版本之間存在語法不一致問題。而CentOS 5自帶的yum採用的是python2.4, 當系統將python升級到2.6或3.0後,出現語法解釋錯誤 解決辦法: [root@jenkins-server ~]# python -V Python 3.3.0 [root@jenkins-server ~]# vim /usr/bin/yum #!/usr/bin/python2.6 //由原來的/use/bin/python改成/usr/bin/python2.6 import sys ....... 2)Python升級帶來的pip命令異常: Traceback (most recent call last): File "/usr/bin/pip", line 5, in <module> from pkg_resources import load_entry_point ImportError: No module named 'pkg_resources' 解決辦法: [root@jenkins-server ~]# cat /usr/bin/pip #!/usr/bin/python2.6 //由原來的/use/bin/python改成/usr/bin/python2.6 # EASY-INSTALL-ENTRY-SCRIPT: 'pip==7.1.0','console_scripts','pip' 3) python升級後致使supervisord不能使用 File "/usr/bin/supervisord", line 2, in <module> from supervisor.supervisord import main ImportError: No module named 'supervisor' [root@jenkins-server ~]# vim /usr/bin/supervisord #!/usr/bin/python2.6 //由原來的/use/bin/python改成/usr/bin/python2.6 from supervisor.supervisord import main ...... 總結: Python升級後,只要是在二進制文件裏引用了"#!/usr/bin/python"的命令都不能正常使用! 必需要將這個引用的python信息改成升級前的那個版本的才能夠正常使用。