python的多版本安裝以及常見錯誤(長期更新)
(此文長期更新)Python安裝常見錯誤匯總
註:本教程以python3.6為基準
既然是總結安裝過程中遇到的錯誤,就順便記錄一下我的安裝過程好了。
- 先來列舉一下安裝python3.6過程中可能需要的依賴包:
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
準備工作:使用wget下載官網提供給我們的源碼包,若為安裝wget則執行
yum install -y wget
1.移動到我們下載源碼包的目錄下 cd /usr/local/
2.下載源碼包wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
3.解壓tar -zxvf Python-3.6.4.tgz
4.刪除安裝包rm -rf Python-3.6.4.tgz
5.創建編譯的路徑 mkdir /usr/local/python3- 編譯安裝過程:確保此時所在目錄為/usr/local/Python-3.6.4,即解壓後的包目錄。ls看一下有什麽
aclocal.m4 config.sub Include Mac Modules Programs Python setup.py build configure install-sh Makefile Objects pybuilddir.txt python-config Tools config.guess configure.ac Lib Makefile.pre Parser pyconfig.h python-config.py config.log Doc libpython3.6m.a Makefile.pre.in PC pyconfig.h.in python-gdb.py config.status Grammar LICENSE Misc PCbuild python README.rst
1../configure --prefix=/usr/local/python3 --enable-optimizations
註:--prefix指定編譯目錄,即為之前創建的/usr/local/python3, --enable-optimizations指最優化安裝
2.編譯make
、安裝make install
,或一次執行make & make install
.編譯過程十分漫長(可能七八分鐘,視具體情況而定),喝杯咖啡,耐心等待^_^
3.最後一步,創建軟鏈接.
[root@localhost Python-3.6.4]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
有人可能好奇為啥要創建這個軟鏈接,echo一下環境變量PATH發現/usr/local/python3/bin
不存在,我們知道想要一個命令能夠不加完整路徑名直接執行,那麽對應的可執行文件必須在環境變量PATH中。對此有兩種解決方式,
方式a.導入環境變量:export PATH="$PATH:/usr/local/python3/bin"
記住,不能忽略PATH串中的$PATH
,否則將意味著覆蓋原有路徑。
方式b.將相應的可執行程序放在已經存在環境變量中,這裏我們推薦/usr/bin(墨守陳規的)。
解釋一下:1./usr/bin下面的都是系統預裝的可執行程序,會隨著系統升級而改變。
2./usr/local/bin目錄是給用戶放置自己的可執行程序的地方,推薦放在這裏,不會被系統升級而覆蓋同名文件。(還記得嗎,我們之前編譯的路徑就在這裏)
好了,扯遠了。。。回歸正題,直接上創建軟鏈接的步驟:
- 刪除原本指向python2.x的軟鏈接,
rm -rf /usr/bin/python
- 創建指向python3.6的軟鏈接,
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python
至此安裝結束,驗證安裝成功
python -V
(大寫的V哦),顯示對應的版本號即表示安裝成功了~安裝過程中遇到的錯誤
- 如果本機中已經存在舊版本python(python2.x)的情況下,安裝python3.x,以下配置文件需要更改:
1./usr/bin/yum
2./usr/libexec/urlgrabber-ext-down
!/usr/bin/python ---> #!/usr/bin/python2
解釋一下:1.yum包管理器是由默認的(系統自帶)python2.x編寫的,當我們以python3的軟鏈接覆蓋原本的python2的軟連接時(ln -s /usr/local/python3/bin/python3.7 /usr/bin/python),python的默認版本變為python3,會導致yum無法執行.
2./usr/libexec/urlgrabber-ext-down
是yum下載好安裝包之後執行安裝的腳本,因此要想軟件被正確安裝,此文件也需要修改默認的python版本.
python的多版本安裝以及常見錯誤(長期更新)