天天看點

anaconda3對應的python版本_電腦裡有多個版本的Python怎麼辦?

anaconda3對應的python版本_電腦裡有多個版本的Python怎麼辦?

沒想到已經兩個多月沒更新了,今天分享一下最近自己處理的Python包管理的一個執行個體,全程菜雞視角

anaconda3對應的python版本_電腦裡有多個版本的Python怎麼辦?

,非常适合沒什麼基礎的人閱讀。

因為實驗需要,我想用一個叫做sematch的包來計算中文詞彙的語義相關性,這個包是需要Python 2.7支援的,而我的Mac自帶的Python版本就是2.7,此外我自己還安裝過Anaconda 3(Anacoanda是Python的發行版,包括Python本身和其他內建的一些庫和工具),但我更習慣用Pycharm做編譯器。

是以我就先用Pycharm建立一個project,這裡和我記憶中不太一樣了(太久沒用了,hhhh),可以選擇用什麼工具來建立環境。我之前是知道Python可以為不同的project各自建立虛拟環境,這樣所需的版本依賴可以互不幹擾,這裡發現可以用不同的工具來建立環境,虛拟環境是用Virtualenv來建立和管理的,或者還可以用conda來建立,所用工具和管理思路有差別,具體差異就不細講了。此外,還可以選擇在這個環境中使用的Python版本。

anaconda3對應的python版本_電腦裡有多個版本的Python怎麼辦?

進入環境之後發現,Pycharm的功能還挺強大,可以在屬性偏好裡看到Project interpreter,在左下角可以直接通過+和-來安裝和解除安裝第三方庫。

anaconda3對應的python版本_電腦裡有多個版本的Python怎麼辦?

不過我在嘗試的時候,這個功能間歇性抽風,有幾次不能安裝成功,建議我還是通過pip來安裝,就很迷。不過Pycharm是自帶一個terminal視窗的,不用去打開系統的終端,而且因為已經在Pycharm中打開了對應的project,是以不需要再去激活這個虛拟環境。因為如果是在系統的終端中,電腦上有很多個版本的Python,有多個項目及其虛拟環境,是以要先激活對應的虛拟環境。這個操作的邏輯其實也很簡單,在虛拟環境的檔案中,有一個名為activate的檔案,這一步本質就是在終端中把這個檔案運作一下。

anaconda3對應的python版本_電腦裡有多個版本的Python怎麼辦?

這裡我必須承認一點,我執行成功的是用Virtualenv建立的虛拟環境,而在conda環境中,我無論是用pip還是conda都顯示無法識别指令,但是由于另一種情況成功了,我就沒再細究,也許上述内容在conda環境下有些步驟是不一樣的。

在安裝sematch成功之後,我開心地找到一個demo準備運作,結果報錯了

anaconda3對應的python版本_電腦裡有多個版本的Python怎麼辦?

悲傷到我忘了截圖,隻能大概用文字給大家描述一下錯誤,總之經過搜尋,這個問題的本質是由于sematch的有一個依賴包是nltk,而這個包已經不支援Python 2了,令人窒息!要解決這個問題,要麼我在所有出現print函數的module的開始都加上一句from future import print_function(大概是這個樣子,實際不記得了),要麼重新安裝一個舊版本的nltk(提前劇透,這是最終成功的一個方案

anaconda3對應的python版本_電腦裡有多個版本的Python怎麼辦?

)。

這裡插播一個另外嘗試的方案,我一直沒有放棄用anaconda 3,在sematch的github中看到一條issue說python 3裡也可以用,但是用剛剛說的直接添加和pip的方法都沒有用,倒是可以從github下載下傳,但是被無情拒絕,具體原因也不記得了,因為另一個方案的成功,這個問題同樣也沒有細究。

是以回到安裝舊版本的nltk這個方案上,這個其實可以先把已有的版本通過減号删掉,然後用“+”安裝,還可以選擇安裝的版本。重新安裝之後再運作之前的demo,那個問題解決了,但是出現了新的問題,我心态真的崩了,用最後的倔強去搜了一下對應的問題,合理猜測是需要用到某個語料庫,但是不知道為啥這個舊版本的nltk沒有下載下傳,是以我到這個語料庫的網站去把所需要的幾個庫給下載下傳到本地了,這一次終于成功了,激動地想哭。

又到了尴尬的結尾部分,每次我都不知道該如何總結,這次就強行雞湯一下吧。世上無難事,隻要肯放棄。