整頓Anaconda Navigator、VS Code、PyGame

2023/04/12閱讀時間約 10 分鐘
不知道為什麼,原本相安無事的兩個人,突然間看對了眼,開始出雙入對、形影不離。這除了讓人看了很不順眼之外,也很浪費時間。雖然想盡辦法要拆散他們,但都沒成功。逼不得已,只好狠下心來,冒險將一切抹除,讓他們走完「成、住、壞、空」最後的階段,輪迴至下一輪的「成、住、壞、空」。只是沒想到,新的輪迴開始之後,原本的問題沒解決,他們還是如膠似漆,反倒是原本水乳交融的另一段關係,從此斷絕,令人神傷。
事情是這樣的。
為了管理Python的package,所以安裝了miniconda這個輕量版的Anaconda,以及Anaconda Navigator。另外,為了擺脫Microsoft Word龐大笨重的身軀,不再用大砲打小鳥,所以改用輕量級的markdown來寫作。試用了幾款的markdown編輯器,最後決定使用Microsoft出的VS Code。
VS Code其實是一款功能強大的程式編輯器,許多寫Python的人會跟Anaconda整合在一起來使用。不過一直以來,都是用Spyder這個編輯器,所以VS Code就單純的只當markdown編輯器使用,不讓他跟Anaconda Navigator認識,以免太複雜的關係,帶來難以預料的後果。
日子就這樣一天一天的過去,一切都是那麼的平穩、順暢,要管理Python的package,就打開Anaconda Navigator;要寫文章,就打開VS Code,兩個人各自獨立、各自生活。
可是,某一天,不知道為什麼,Anaconda Navigator和VS Code這兩個原本不相識的人,居然就天雷勾動地火,開始打得火熱,每次啟動Anaconda Navigator時,他就會自動去啟動VS Code。兩個人這種黏踢踢的樣子,除了讓人想翻白眼之外,最讓人受不了的是浪費時間、浪費資源。明明要管理package時,只需要Anaconda Navigator一個人就夠了,卻非得每次再多拉VS Code一起,肖想兩個人領兩份薪水,但只做一個人的工作。
為了制止這種不當的行為,於是開始想辦法切斷Anaconda Navigator和VS Code之間的聯繫。既然是Anaconda Navigator去招惹VS Code的,那理該從Anaconda Navigator著手。
要調整Anaconda Navigator的設定,位置在File > Preferences。打開之後,赫然發現,在VS Code path這個欄位裡頭,居然很神奇地自動填上了VS Code所在的位置。真不知道Anaconda Navigator是怎麼辦到的,怎麼可能會知道VS Code芳蹤何處!之所以會這麼訝異,是因為現在用的VS Code是不用安裝的可攜式版本,並未安裝在安裝軟體時慣用的C碟,而是放在E碟。這樣子都還能找得到,算他厲害!
把VS Code所在位置的記錄給刪除清空並套用之後,一邊心裡想著,這樣應該就能切斷這兩人間惱人的關係了,一邊進行測試。
「咦?!這刪掉的記錄怎麼又回來了?」心裡一邊嘀咕一邊又試了好幾次,還是一樣的結果。這種事也不是第一次碰到了,有些軟體,明明更改設定的方式看起來就很簡單,可是總藏有一些貓膩,非得同時處理一些其他的小細節不可,不然休想順利更改。看到畫面最下面還有個「Configure Navigator」,打開一看,是Navigator的設定檔內容,裡頭有更細部的設定。
Navigator的設定檔有它特別的格式和關鍵字,網路查了一下,要關閉VS Code,需要加入一行「vscode_enable = False」。照做之後……還是沒用!
最後一招,「Reset to defaults」這個總可以了吧!沒想到,還是不行,而且更讓人傻眼的是,先前加入的那一行還在,這個恢復原廠設定的按鈕,一點作用都沒有。
網路上也有人提到這個現象,不過也沒什麼解方。看來只好使出砍掉重練這個大絕招了,順便把可以升級的package都升級。
重新安裝較新版的miniconda和Anaconda Navigator之後,果然……還是沒用!
「老子就不信搞不定你們這兩個傢伙!」一股怒氣直衝腦門,雙手滑鼠、鍵盤不停歇,開始朝軟體更深的內部挖下去。
先前就很好奇,Anaconda Navigator怎麼會知道VS Code在哪裡?絕不可能整顆硬碟去找,一定有什麼比較有效率的方法。如果能把這部分的程式改掉,讓他找不到或根本就不去找,那應該就可以解決問題了。
在反覆嘗試失敗的過程中,觀察到一個現象:原本不知道VS Code芳蹤何處的Anaconda Navigator,只有在VS Code已經啟動之後,才能在自己啟動的過程中,找到VS Code的位置。這現象看起來就讓人懷疑,Anaconda Navigator是透過查詢機碼來知道VS Code在哪裡。所以,如果把VS Code放到不同的位置,之後不要讓這兩個人同時啟動見面,那就可以避免死灰復燃了。
要改VS Code的位置其實還挺簡單的,因為用的是可攜式版本的VS Code,只要把資料夾的名字改掉就可以了。就這樣,總算找到個雖不滿意但可以接受的辦法,來制止Anaconda Navigator和VS Code間的糾纏不清。
改程式的做法,最終還是以失敗收場,因為不太敢亂改,也沒辦法把所有程式碼從頭到尾研究透徹,只能找出有vscode字眼的部分改看看。不過雖然失敗,但卻證實了,Anaconda Navigator搜尋VS Code位置的方式中,還真的有機碼這一項。他會先去找Windows裡頭的Program Files、Program Files (x86)等內定擺放軟體的資料夾,然後再找特定的機碼。這也是Anaconda Navigator之所以要在VS Code啟動之後,才能找到他的位置的原因。因為VS Code的位置是在E碟,透過機碼才能知道。
找到方法切斷Anaconda Navigator和VS Code間的聯繫之後,再來是要安裝pygame。
Pygame是個比較不合群的傢伙,除了在Anaconda Navigator未安裝的package清單中看不到他之外,也沒辦法在命令列介面中用conda這個指令安裝。要安裝pygame,只能用pip。依照先前安裝的經驗,很快就裝好了,只是,唉!總是會有個「只是」出現。只是import pygame時,卻說找不到,而在已安裝package的清單中,也的確沒看到他的蹤影。
明明安裝時,最後有安裝成功的訊息,那怎會找不到?
網路上有人說要用pip3,而不是pip。照做之後,還是找不到。
也有人說pip的版本會有影響,要用比較新的版本才行。可是現在用的pip版本已經比他用的還新了呀,但還是找不到。
眾說紛紜中,看到有個網友提到他成功安裝的方法,但他也不知道為什麼那麼做可以成功,反正就是成功了,典型的只知其然,不知其所以然。無論如何,每個人的使用環境不同,只能姑且一試。
這方法是這樣子的:先安裝Anaconda Navigator的Home pane中的CMD.exe Prompt,然後用Anaconda Prompt這個命令列介面,以pip來安裝。
還真的成功了!可是…… why?
研究了老半天,總算知道原因了。原來,先前安裝時,用的是Anaconda PowerShell Prompt,後來用的是Anaconda Prompt,而這兩個介面會把pygame裝到不同的地方。用pip list -v可以看到所有已安裝的package,以及安裝的位置。很明顯的,用Anaconda Prompt安裝,才能裝到正確的位置,而在Anaconda Navigator的已安裝package清單中,也才會顯示有安裝pygame。
這實在是不知道說什麼才好。Anaconda PowerShell Prompt是裝好miniconda後,自動出現在開始功能表中的。想當然耳,就用它來裝pygame了,誰知道這樣反而不行,還非得再多裝個Anaconda Prompt才可以。既然如此,那為什麼裝好miniconda之後,不直接就給使用者Anaconda Prompt就好?實在是搞不懂!
折騰了好些時間,Anaconda Navigator和pygame總算又願意在一起了。除此之外,在重新搓合他們倆的過程中,還意外找到可以永久避免Anaconda Navigator和VS Code糾纏不清的方法。
在Anaconda Navigator的Home pane中,列出了一些package,有已經安裝好的,可以從這裡啟動、更新、移除,也有尚未安裝的,可以從這裡安裝。在這裡,也看到了VS Code。
測試了一下,發現如果Anconda Navigator不知道VS Code的存在,那在Home pane中,就不會列出VS Code。既然如此,如果VS Code出現在Home pane中,那想辦法讓他消失,不就可以切斷他和Anaconda Navigator間的糾纏了?
在每個package圖示的右上方,都有個齒輪,從那裡可以更新、移除package。可是……又來了!每次都會有個可是。可是在VS Code圖示的齒輪裡頭,所有的選項都不能用,想把VS Code從這裡移除,根本辦不到。
還好這問題的答案還挺容易找的,事實上,官網的文件中就有。要把package從Home pane中移除,要在C:\Users\username\AppData\Roaming\.anaconda\navigator\applications這個資料夾中,造一個附檔名是yaml的檔案,檔案裡頭寫著像下列這樣符合yaml格式的指令:
vscode:
  is_available: false
這樣當Anaconda Navigator啟動時,就會去執行這個檔案裡頭的指令,而VS Code也就不會出現在Anaconda Navigator的眼前,徹底斷絕掉兩人之間的糾葛。
呼~~~總算該分手的分手,該在一起的在一起,跨過新一輪「成、住、壞、空」中「成」的階段,讓一切就定位,邁入「住」的階段。
希望這次可以「住」久一點。
為什麼會看到廣告
13會員
86內容數
寫點東西自娛娛人
留言0
查看全部
發表第一個留言支持創作者!