許多開發者在 Windows 上安裝了多個 Python 版本(例如 3.8、3.11、WinPython 3.12 等),
卻常常遇到「到底現在執行的是哪個 Python?」的困惑。
甚至有時候明明沒有把某個版本加入環境變數(PATH),但在該資料夾中執行 python 時,卻發現系統竟然使用了那個版本。
這篇文章將完整說明 Windows 如何尋找 Python 的執行檔、
並教你如何控制與切換版本,避免套件或環境衝突。
🧩 一、Windows 的執行檔搜尋順序(PATH Lookup Order)
當你在命令提示字元(CMD)輸入:
pythonWindows 並不是「神奇地知道」哪個 Python 要執行,
它會按照一定順序依次搜尋:
搜尋順序說明
1️⃣目前所在的資料夾(Current Working Directory)
2️⃣系統環境變數 PATH 中登錄的每個資料夾(從前往後找)
3️⃣一些特殊系統目錄,如 C:\Windows\System32、WindowsApps 等
✅ 第一個被找到的 python.exe 就會被執行。
🧠 二、實際案例:為什麼沒加 PATH 還是能執行?
假設你的環境如下:
C:\Users\crab1\Downloads\WPy64-312101\python\python.exe ← WinPython 3.12
C:\Users\crab1\AppData\Local\Programs\Python\Python311\python.exe
C:\Users\crab1\AppData\Local\Programs\Python\Python38\python.exe
然後你打開 CMD,進入 WinPython 的資料夾:
cd C:\Users\crab1\Downloads\WPy64-312101\python
這時候輸入:
python --version
結果會顯示:
Python 3.12.10
即使你根本沒有把 WinPython 加入環境變數,它仍然被優先使用。
原因就是——Windows 會優先搜尋「目前所在的資料夾」。
🔍 三、如何確認目前執行的是哪個 Python?
非常簡單,輸入以下指令:
where python輸出會顯示所有找到的 Python 路徑,依照優先順序排列,例如:
C:\Users\crab1\Downloads\WPy64-312101\python\python.exe
C:\Users\crab1\AppData\Local\Programs\Python\Python311\python.exe
C:\Users\crab1\AppData\Local\Programs\Python\Python38\python.exe
C:\Users\crab1\AppData\Local\Microsoft\WindowsApps\python.exe
第一行就是目前被執行的版本。
你也可以用 Python 自己來確認:
python -c "import sys; print(sys.executable)"
輸出會顯示:
C:\Users\crab1\Downloads\WPy64-312101\python\python.exe
⚙️ 四、明確指定要使用的版本
如果你同時安裝了多個版本,
可以直接用「完整路徑」執行,避免混淆:
# 執行 Python 3.8
C:\Users\crab1\AppData\Local\Programs\Python\Python38\python.exe
# 執行 Python 3.11
C:\Users\crab1\AppData\Local\Programs\Python\Python311\python.exe
# 執行 WinPython 3.12
C:\Users\crab1\Downloads\WPy64-312101\python\python.exe
同理,安裝套件時也可以針對特定版本:
C:\Users\crab1\Downloads\WPy64-312101\python\python.exe -m pip install numpy
這樣就不會誤裝到系統的 Python 3.8 或 3.11 之中。













