今天安裝代碼分析可視化工具RunSnakeRun牵寺,用pip3安裝老是報錯博秫,最后才發(fā)現(xiàn)RunSnakeRun在2013年就停止了更新悲柱,最新版本為2.0.4夫壁,因此只能用python2.7安裝联贩。我的電腦上有python2.7和python3.6兩個版本审孽,不管用pip還是pip3翘鸭,都是默認(rèn)安裝在python3.6中廷粒,最早使用的python的時候沒有注意版本問題贴见,這次不得不仔細(xì)看看了烘苹。
首先我們要知道我們在terminal上輸入python或者python3等命令是如何執(zhí)行的,輸入python后首先在當(dāng)前目錄下查找名為python的文件并執(zhí)行片部,如果沒有就在當(dāng)前的用戶環(huán)境變量中查詢镣衡,再沒有的話就在系統(tǒng)所有用戶的環(huán)境變量下查詢。當(dāng)前用戶的環(huán)境變量保存在~/.bashrc
文件中档悠,系統(tǒng)所有用戶的環(huán)境變量保存在/etc/environment
中廊鸥,如下:
$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
也可以用env
命令查看,當(dāng)你不是root時辖所,家目錄中的~./.local/bin
也在環(huán)境變量中惰说。
$ env | grep PATH
PATH=/home/jiangzhongtao/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
如果你是超級用戶,則不含之前的~./.local/bin
奴烙。
而python的執(zhí)行文件保存在/usr/bin
這個環(huán)境目錄下助被,可通過cd /usr/bin && ll | grep python
查詢。查詢發(fā)現(xiàn)切诀,該文件夾下有很多python文件的軟鏈接揩环,比如在我的電腦里python和python2都是python2.7的軟鏈接,而python3是python3.6的軟鏈接幅虑。在python后輸入不同的編號即可使用不同的python丰滑,如果你有多個不同的python。也可以自己為不同的python創(chuàng)建不同的軟鏈接以區(qū)分。
pip是python的包管理工具褒墨,保存在/usr/local/bin
這個環(huán)境目錄下炫刷,可使用pip -V
查看不同pip所關(guān)聯(lián)的python版本。之前我無法在python2.7版本安裝就是因為我所有的pip都關(guān)聯(lián)到了python3.6郁妈,這里有兩種關(guān)聯(lián)方式:
第一種方式是永久更改浑玛,首先
vim pip
進(jìn)入你想更改pip文件中,然后將首行的#!/usr/bin/python
改成你所需要的python版本文件噩咪,這個版本文件可以是之前介紹的python位置下的可執(zhí)行文件本體或其軟鏈接顾彰。這一行實際上申明了輸入pip時用哪個python執(zhí)行pip。第二種方式是暫時更改胃碾,假如要強制使用python2.7執(zhí)行pip涨享,輸入
python2 -m pip3 install <package>
。這里有一個問題仆百,就是因為不管在/usr/local/bin
目錄下pip的編號是多少厕隧,包的名字依然是pip,因此使用上面的命令會報錯/usr/bin/python2: No module named pip3
俄周,因此如果要強制執(zhí)行吁讨,只能使用python2 -m pip install <package>
。
在第一種方式中可能會報錯ImportError: No module named pip._internal
栈源,這里只需要用wget下載文件wget https://bootstrap.pypa.io/get-pip.py
挡爵,然后使用python2.7 get-pip.py --force-reinstall
重新安裝pip即可。