VS Code 中安裝 pygame 過程揭秘

有位同學做了知名的 Youtuber "GrandmaCan-我阿嬤都會" 的 "pygame 3小時製作一個遊戲",做完了出現問題來找我幫助,問題是無法執行 pip,這看起來是 Python 環境問題,而我一直都是用 Anaconda + Spyder/JupyterNB,只好憑想像幫助他。

但是,越幫越忙,學生重裝了 Python 3.10 之後,甚至出現了 pygame error: Unable to open file "rumble.ogg"

學生也挺聰明的,把 ogg 檔轉為 wav 檔繞過了這個問題。但接著發生 pyinstaller 用 pip 安裝好後不能執行問題。

最近加上 Spyder 5.1.5 有嚴重的 input() 問題這燃起了傑夫老師熊熊的怒火,決定來試一試 VS Code 。

正題開始

把 Anacoda 移除之後,首先確保 PATH 中沒有任何 Python 相關的路徑。本來就不該有,因為傑夫老師裝 Anaconda 時沒有將 Python 路徑設進 PATH。

接著安裝 VS Code,安裝時勾選 "加入 PATH 中",這裡是把 VS Code 的路徑加入 PATH,與 Python 尚無關係。

安裝好後,寫個簡單的 Hello World 小程式,可是發現無法執行(可能是因為還沒安裝 Python Extension,但傑夫老師這裡就先跳過了)
於是去安裝 Python 3.10,而且是與同學相同,從 App Store 直接安裝。

毫無任何提示,也沒要求把 Python 路徑加入 PATH,就這樣安裝好了。檢查一下 PATH 設定,除了新增的 VS Code 路徑,就沒其他的了。

回到 VS Code 中(關掉重開),發現還是無法執行剛剛的 Hello World,不過這次就來安裝 Python Extension。裝好之後,就發現右上角多了個三角形的執行鍵,按下去發現可以執行了。

可是,看一下 Python3.10.exe 的路徑,這是什麼鬼路徑呀!? 注意:VS Code 右下方寫著 Python 3.10.5 64-bit (windows store),這代表著 VS Code 現在正使用的是剛剛從 App Store 安裝的 Python 3.10。

接著用 pip 安裝 pygame,毫無問題。

但是一執行這個遊戲的 py 檔,馬上出現跟同學一樣的問題 pygame.error: Unable to open file "rumble.ogg"

到此,只能說我重現了同學的問題,這個程式在原本的環境,甚至 Replit.com 上面都能執行,絕對不是 ogg 檔或是程式的問題。

於是,傑夫老師勇敢的移除了 Python 3.10,移除之後發現 VS Code 右下方變成 Select Interpreter,表示找不到 Python 環境了。

這次,到 Python 官網下載 3.9.13 版重新安裝。安裝時勾選上 "Add Python 3.9 to PATH"。

裝好之後檢查 PATH,果然多了 Python39 的路徑,這時要重新開機 PATH 才會生效。

重新進入 VS Code,Hello World 小程式可以執行了~注意此時右下角出現的是 Python 3.9.13 64-bit

接著 pip 安裝 pygame 很快就安裝好,而且程式可以執行,聲音也沒問題。

再來 pip 安裝 pyinstaller 也能順利的安裝

最後,將做好的遊戲轉成 .exe 檔。

.exe 檔成功轉出,copy 到與 .py 同一個目錄下,不然 .exe檔會找不到圖檔、音檔那些檔案。然後,點擊執行,成功~

結論:

  1. Python 3.10 是否是造成 pygame 無法開啟 ogg 檔的主因並不確定,網路上找不到任何相關資料。

  2. 不要從 App Store 安裝 Python,因為會裝到一個奇怪的目錄,而且安裝過程中無法加入 PATH,這很可能就是 pip 不能執行或 pyinstaller 不能執行原因。

  3. VS Code 的 Python 環境管理(剛剛一直提到的右下角出現的版本以及 PATH)需要對電腦熟悉甚至對 Python 虛擬環境有點瞭解的人才能很明白,Anacoda 對於這點比較無腦,而且有個簡單的 UI 能讓初學者較容易進入狀況。

字打完圖貼完,收工,Bye now~

什麼!有人問 PATH 是什麼?
PATH 是個電腦的環境變數,紀錄著程式執行時要去查找的路徑。如果沒把 Python 3.9 0 安裝路徑加到 PATH 中,當執行 python 相關程式時,或要引用一些套件時,就會發生找不到或無法執行的狀況。