Python和pip版本的問(wèn)題

今天安裝代碼分析可視化工具RunSnakeRun,用pip3安裝老是報(bào)錯(cuò),最后才發(fā)現(xiàn)RunSnakeRun在2013年就停止了更新,最新版本為2.0.4,因此只能用python2.7安裝。我的電腦上有python2.7和python3.6兩個(gè)版本,不管用pip還是pip3,都是默認(rèn)安裝在python3.6中,最早使用的python的時(shí)候沒(méi)有注意版本問(wèn)題,這次不得不仔細(xì)看看了。

首先我們要知道我們?cè)趖erminal上輸入python或者python3等命令是如何執(zhí)行的,輸入python后首先在當(dāng)前目錄下查找名為python的文件并執(zhí)行,如果沒(méi)有就在當(dāng)前的用戶環(huán)境變量中查詢,再?zèng)]有的話就在系統(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時(shí),家目錄中的~./.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

如果你是超級(jí)用戶,則不含之前的~./.local/bin。

而python的執(zhí)行文件保存在/usr/bin這個(gè)環(huán)境目錄下,可通過(guò)cd /usr/bin && ll | grep python查詢。查詢發(fā)現(xiàn),該文件夾下有很多python文件的軟鏈接,比如在我的電腦里python和python2都是python2.7的軟鏈接,而python3是python3.6的軟鏈接。在python后輸入不同的編號(hào)即可使用不同的python,如果你有多個(gè)不同的python。也可以自己為不同的python創(chuàng)建不同的軟鏈接以區(qū)分。

pip是python的包管理工具,保存在/usr/local/bin這個(gè)環(huán)境目錄下,可使用pip -V查看不同pip所關(guān)聯(lián)的python版本。之前我無(wú)法在python2.7版本安裝就是因?yàn)槲宜械膒ip都關(guān)聯(lián)到了python3.6,這里有兩種關(guān)聯(lián)方式:

  • 第一種方式是永久更改,首先vim pip進(jìn)入你想更改pip文件中,然后將首行的#!/usr/bin/python改成你所需要的python版本文件,這個(gè)版本文件可以是之前介紹的python位置下的可執(zhí)行文件本體或其軟鏈接。這一行實(shí)際上申明了輸入pip時(shí)用哪個(gè)python執(zhí)行pip。

  • 第二種方式是暫時(shí)更改,假如要強(qiáng)制使用python2.7執(zhí)行pip,輸入python2 -m pip3 install <package>。這里有一個(gè)問(wèn)題,就是因?yàn)椴还茉?code>/usr/local/bin目錄下pip的編號(hào)是多少,包的名字依然是pip,因此使用上面的命令會(huì)報(bào)錯(cuò)/usr/bin/python2: No module named pip3,因此如果要強(qiáng)制執(zhí)行,只能使用python2 -m pip install <package>。

在第一種方式中可能會(huì)報(bào)錯(cuò)ImportError: No module named pip._internal,這里只需要用wget下載文件wget https://bootstrap.pypa.io/get-pip.py,然后使用python2.7 get-pip.py --force-reinstall重新安裝pip即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容