我的 Windows 10 早先從 https://www.python.org/ 下載安裝過 Python 3,前幾天在 Cmder 下指令想跑 Python 時卻彈出 Microsoft Store 安裝提示:

依循提示安裝完,在 Cmder 使用便正常了:

不過,當我試著由 Cmder 的 bash 環境執行 python,卻彈出 bash: /c/Users/Jeffrey/AppData/Local/Microsoft/WindowsApps/python: Permission denied 權限存取錯誤,讓我滿頭霧水:

爬文後學到幾件事:

  1. Microsoft Store 自動安裝 Python 算是 May 2019 Windows Upate for Windows 10 起加入的貼心設計。Microsoft Python Team 為了讓 Python 初學者更容易上手,在系統預設將 python.exe/python3.exe 導向自動安裝程序。當使用者在命名列視窗輸入 python 而機器沒安裝 Python,將被導引到 Microsoft Store 自動下載安裝,省去 Google 或查書找到 Python 官網,選對版本下載,執行安裝程式(加減要輸入一些讓初學者困惑的選項)等一連串程序,平心而論,這對超級初心者的體驗確實大大加分。但像我已經安裝過 Python 卻跑出重新安裝提示,倒是讓我墜入五里霧。
    參考:Who put Python in the Windows 10 May 2019 Update?
  2. Windows 10 是透過所謂 App Execution Aliases 技術將 python.exe、python3.exe 等執行檔導向 Microsoft Store Python 安裝。其位置在 C:\User\username\AppData\Local\Microsoft\WindowsApp:(我用 Microsoft Store 裝了 Python 3.7,故圖中還有 python3.7、pip3.7... 等項目)
  3. 依據 Frequently Asked Questions about using Python on Windows 的說法,如果使用者已自行安裝 Python 並使用「add to PATH」選項,則自行安裝 Python 路徑在環境變數 PATH 理應排在 AppData\Local\Microsoft\WindowsApp 的前方,會執行自行安裝的 Python:

    估計我應該是安裝 Python 但沒設 PATH,之後做 Windows 10 更新時增加了 python 導向,才會冒出安裝 Microsoft Store 版 Python 提示。
  4. 若要在 bash 裡執行 Microsoft Store 版 Python,需使用 winpty,輸入 winpty python 參考:(以 Microsoft Store 安裝 Python 3.7 示範)

若你完全不想 Microsoft Store Python 進場攪局,想回歸傳統手動安裝設定 Python,則可選擇把它們關閉。開啟 Manage app execution aliases:

找到 python.exe、python3.exe 應用程式安裝程式,將它們關閉就行了。

Information of how Windows 10 using app execution aliases to help user install Python easily.


Comments

Be the first to post a comment

Post a comment