Windows 平台的安裝建議
在 Windows 安裝多個版本的 python 你需要注意以下幾點:
- 使用一致的 '系統安裝' 或者 '用戶安裝'. 也就是第一個版本的 python 你是用 '用戶安裝', 以後就都用 '用戶安裝'. 不要一個是 '系統安裝' 下一個卻是用 '用戶安裝'. (這樣子當 Python 環境出現問題時會比較容易排查)
- 在可行的狀況下, 盡量是用 '系統安裝'. 除非是要不到系統管理者權限無法進行 '系統安裝', 才改用 '用戶安裝'.
- 除了最常用的版本之外, 其他的版本不要加進環境變數 PATH 裡 (即安裝時, 第一頁的 "Add Python 3.x to PATH" 不要勾選). 如果已經裝錯了, 可以直接使用 '編輯系統環境變數' 來刪掉它 (一般是有二個 C:\Program Files\Python3x\Scripts\ 和 C:\Program Files\Python3x\).
- 使用時請配合使用 python 虛擬環境 (強列建議), 或者參考以下說明:
除了最常用的那一個版本, 其他的都不要勾選 Add python 3.x to PATH, 選用 'Customize Installation'.
這一頁直接跳過.
第三頁 Advanced Options 設定.
記得要勾選 'Install for all Users' 才會轉成 '系統安裝'.
Python 安裝進行中
Python 安裝完成
新版 Python 安裝完成多了一個選項.
最後這個選項是當你自訂了 Python 的安裝路徑, 而且是一個很深的路徑 (長度大於 260 個字元), 那麼你會需要啟用這個選項. 進一步了解這個問題
Python Launcher
Python Launcher 是 Python for Windows 才有的功能.(註一)
Python Launcher 的出現, 讓我們可以不必依賴環境變數 PATH 的設定來簡化 python 執行檔的使用, 同時也簡化了多個版本的 python 同時存在時的管理工作. (試想如果你的系統裡安裝 3 或 4 個 python 時, 你到底要如何指定使用其中一個版本?)
Python Launcher 與二個版本的 python
Python Launcher py.exe 是自 Python 3.3 版起, 隨附在 Python for Windows 的一個工具程式.
- 它會被安裝到 windows 目錄中, 因此使用它不必修改環境變數 PATH(註二).
- 它是一個 python 的多版本啟動管理程式. 所以它和 python 本身的版本無關 (可以啟動任何版本的 Python), 同時在虛擬環境啟動的狀態下, 還認得啟動的那個虛擬環境.
- 使用時, 只要直接將原本指令中的 python 改成 py 或者附加版號的 py -3.8 即可.
註一: github 上也有人寫了給 Linux 用的 bash script py, 用法和 windows 的 py.exe 幾乎一致, 需要的就自行取用.
註二: 如果你連第一個安裝的 python 也沒有把它的路徑加到環境變數 PATH 裡, 同時又沒有使用 python venv (或其他類似的) 虛擬環境, 會出現找不到 pip 指令的狀況. 請不必大驚小怪, 只要用 py -m pip 替代 pip 就可以了. 而且進到 python venv 虛擬環境中, pip 指令就會可以使用了, 其實影響真的不大. 如果真的沒有 pip 用不習慣, 建議環境變數 PATH 裡還是加上你最常用的那一版, 也方便其他需要 python.exe 的程式或者批次檔的呼叫. 其他的版本安裝時就可以不必加了.
使用方法
- 列出可用版本(註三):
- py -0p: 列出版本, 及執行檔位置
- py -0: 簡式, 只列出版本
沒有啟動虛擬環境時:
D:\Works\jupyter>py -0 Installed Pythons found by py Launcher for Windows -3.9-64 * -3.8-64啟動了虛擬環境:
(myEnv) D:\Works\jupyter>py -0 Installed Pythons found by py Launcher for Windows (venv) * -3.9-64 -3.8-64上面二個指令輸出中, 有打星號 * 的是 py.exe 的預設使用版本. 所以, 不管是否啟動了 venv 虛擬環境, 你都可以放心大膽的直接用 py 來取代指令中的 python.
2023/04/07 更新: 新版本的輸出稍微有點更動.
新版本的 py.exe 輸出 (在一般環境中)
新版本的 py.exe 輸出 (在虛擬環境中)
- 指定使用特定版本:
- 可以指定大版本號即可: 例如:
py -2 test.py 即是使用 python 2 版 (系統有多個 2 版時, 則預設使用最新的 2 版) 執行 test.py;
py -3 test.py 則是使用 python 3 版 (系統有多個 3 版時, 則預設使用最新的 3 版) 執行 test.py. - 可以指定大版本號加次版號: 例如, python 同時有 3.5 和 3.8 版存在:
- py -3.5 test.py 是用 3.5 版執行;
- py -3.8 test.py 則是改用 3.8 版執行.
注意:它只管到次版號這一層, 我們無法指定再細的版號, 例如: 3.8.2 和 3.8.6 是無法指定的. (有這種需求請改用 python venv 或者 conda)
- 可以配合 .py 檔檔頭的 hashbang (#!), 或者強制指定 python 版本 (覆蓋 hashbang 設定)
例如: 以下三個測試檔案
test1.pytest2.pyimport sys print(sys.version)test3.py#! python2 import sys print(sys.version)則以下指令結果如其後的註解#! python3 import sys print(sys.version)py test1.py # 預設使用 python 最新版本 py test2.py # 使用 #! 指定 python 版本 py test3.py # 使用 #! 指定 python 版本 py -3.7 test1.py # 強制使用 python 3.7 版 py -3.8 test2.py # 強制使用 python 3.8 版, (檔頭的 hashbang 無效) py -2 test3.py # 強制使用最新的 python2, (檔頭的 hashbang 無效) - 找不到指定版本時, 會提示系統內沒有安裝該版本, 例如:
Requested Python version (2) is not installed
- 可以指定大版本號即可: 例如:
註三: py.exe 只認得經由 python for windows 安裝程式安裝的 python.exe, 它會在 windows registry 中, 寫入 python 版本及安裝路徑. 實際位置如下段說明.
py.exe如何決定用哪一個版本的 python.exe ?
先確定應該用哪一個版本:
如果使用 py.exe 指令時有指定用哪一個版本, 則直接在找尋指定的版本. 如果沒有指定版本, 則py.exe會先檢查 py.ini 來看看是否有預設指定使用哪一個版本:
依序是:
再找尋所需要的版本
接下來 py.exe 會經由檢查 windows registry 來找尋該版本的 python.exe 的路徑:
- 先檢查 HKCU\SOFTWARE\Python\PythonCore\<a>.<b>\InstallPath
- 再檢查 HKLM\SOFTWARE\Python\PythonCore\<a>.<b>\InstallPath
如果 HKCU (登載使用者安裝的版本) 裡有找到需要版本的安裝路徑時, 優先使用 HKCU 裡找到的. 找不到, 再到 HKLM (登載系統安裝的版本) 裡找所需要的版本. 當 HKCU 和 HKLM 裡都有相同的版本+次版號時, HKCU 的優先權大於 HKLM(註六).
註四: %LOCALAPPDATA% 的實際位置一般是使用者家目錄\AppData\Local,
%SystemRoot% 的實際位置一般是 C:\Windows.
註五: 有點拗口. 應該是沒有指定版本時, 如果 HKCU 裡有找到 python 安裝路徑時, 優先使用 HKCU 裡找到的最大版本. 沒有時, 改用 HKLM 裡找到的最大版本. 二者都有, 當然以 HKCU 優先. 有指定版本時, HKCU 裡有就用 HKCU 裡的, 沒有再改用 HKLM 裡的.
註六: python 的版本號使用 a.b.c 的格式. a 是大版本號用於架構修改, 即所謂的大改版; b 是次版號用於增加新功能/特性時; c 為修正版號用於修正錯誤; 但是 py.exe 和 py.ini 二者都只會看到版本+次版號 (即 a.b) 而不管修正版號. 故而當 py.exe 決定使用 3.8 版時, 即便系統安裝的版本是 3.8.6 系統依然會選擇使用使用者安裝的 3.8.3 版.
檢查 python 的版本號碼及執行檔路徑
下列指令可以列出 python 的版本號碼
python --version
# 或者
python -V # 注意是大寫 V
python -VV # 也是大寫 V, 連同此版本的編譯資訊一起顯示
同樣的, 下列指令可以列出 py.exe 所帶出來的 python 版本號碼
py --version
# 或者
py -V # 注意以下都是大寫 V
# 或者
py -3 -V # py 帶出哪一個版本的 python3
# 或者
py -3.8 -V # py 帶出哪一個版本的 3.8
出於各種不同的原因, 你可能會有許多的 python 執行環境 (包括: 安裝了多個版本, 並為不同專案建了不同版本的虛擬環境). 因此需要知道並確定當下我們使用的 python.exe 是哪一個, 還有版本是多少?
下列指令可以列出當前環境下你下的 python 指令是哪一個?
# Windows cmd, git-bash
where python
# 或者 mac OS X, Linux, git-bash (windows)
which python
which -a python
Windows cmd 及 powershell 視窗會列出所有可以經由環境變數 PATH 找到的 python.exe (當然只有第一個才是真正會被系統叫用的 python.exe). mac 及 linux 則只會輸出第一個經由環境變數 PATH 找到的 python 執行檔 (加上參數 -a 就可以和 Windows 的 where 一樣, 列出所有可以經由環境變數 PATH 找到的 python 指令). 另外 Windows 的 git-bash 視窗則比較特別: 二者指令都可以用.
還記得上面說安裝多個版本的 python 時只要加入最常用的那一個嗎? 所以在 Windows 環境中這裡應該只會列出 2~3 個 python.exe: 第一個當然是 venv 裡的那一個 (如果有啟動 venv 的話), 第二個則是最常用的那一個, 最後會有一個 win10 所提共的假 python.exe (用來從 Microsoft Store 下載 microsoft 自己打包的 python).
另外, 還有 sys.path 這個資訊對於檢查 python 或/及 jupyter 環境是否有問題也有很大的幫助.
(vLAB2) D:\Works\jupyter> python -m site
sys.path = [
'D:\\Works\\jupyter',
'D:\\Python38\\python38.zip',
'D:\\Python38\\DLLs',
'D:\\Python38\\lib',
'D:\\Python38',
'D:\\Works\\jupyter\\vLAB2',
'D:\\Works\\jupyter\\vLAB2\\lib\\site-packages',
'D:\\Works\\jupyter\\vLAB2\\lib\\site-packages\\win32',
'D:\\Works\\jupyter\\vLAB2\\lib\\site-packages\\win32\\lib',
'D:\\Works\\jupyter\\vLAB2\\lib\\site-packages\\Pythonwin',
]
USER_BASE: 'C:\\Users\\User001\\AppData\\Roaming\\Python' (exists)
USER_SITE: 'C:\\Users\\User001\\AppData\\Roaming\\Python\\Python38\\site-packages' (exists)
ENABLE_USER_SITE: False
如果你是在 jupyter 環境裡 (notebook 或者 jupyterlab均可), 只要在指令前多加一個 ! 也是可以執行 cmd 或者是 bash 指令. 例如在 code cell 裡輸入並執行 !where python 或者是 !which python 指令得知目前使用的 python 是安裝在哪一個路徑中.
在 jupyter 環境中執上述各項檢查.
配合 python venv 模組建立虛擬環境
知道 py.exe 如何運作之後, 我們就可以很容易的建立不同版本的 python 虛擬環境.
D:\ProjA>py -m venv vEnv3 # 使用預設版本, 建立虛擬環境 vEnv3
D:\ProjA>vEnv3\Scripts\activate # 進入虛擬環境 vEnv3
(vEnv3) D:\ProjA>py -m pip install -U pip # 更新虛擬環境的 pip
# 可以為 vEnv3 安裝 python package 了
(vEnv3) D:\ProjA>pip install ...
# 或者
D:\ProjA>py -3.9 -m venv vEnv39 # 使用 3.9 版, 建立虛擬環境 vEnv39
D:\ProjA>vEnv39\Scripts\activate # 進入虛擬環境 vEnv39
(vEnv39) D:\ProjA>py -m pip install -U pip # 更新虛擬環境的 pip
# 可以為 vEnv39 安裝 python package 了
(vEnv39) D:\ProjA>pip install ...
# 或者
D:\ProjA>py -3.8 -m venv vEnv38 # 使用 3.8 版, 建立虛擬環境 vEnv38
D:\ProjA>vEnv38\Scripts\activate # 進入虛擬環境 vEnv38
(vEnv38) D:\ProjA>py -m pip install -U pip # 更新虛擬環境的 pip
# 可以為 vEnv38 安裝 python package 了
(vEnv38) D:\ProjA>pip install ...
為不同版本的 python 安裝 package
也可以利用 py.exe 來為各個版本的 python 安裝 package. 例如: 安裝 jupyterlab 和一些 AI 數據分析常用的套件.
# 安裝到 python 3.5 版的原始環境裡
D:\ProjA>py -3.5 -m pip install jupyterlab numpy pandas matplotlib
# 安裝到 python 3.9 版的原始環境裡
D:\ProjA>py -3.9 -m pip install jupyterlab numpy==1.19.3 pandas matplotlib
注意: 請不要和上面的虛擬環境下用的指令搞混了. 在虛擬環境裡, 其他不相干的 python 環境已經隔開了, 所以我們並不需要再額外指定版本. 而是應該啟動該虛擬環境, 再直接用 pip 指令來安裝 packages.
# 啟動虛擬環境 vLab2
D:\ProjA>vLab2\Scripts\activate
# 在虛擬環境 vLab2 裡安裝 packages
(vLab2) D:\ProjA>pip install jupyterlab numpy pandas matplotlib
或者指定使用虛擬環境裡的 pip 來安裝 packages.
# 指定使用虛擬環境 vLab2 裡的 pip 來安裝 packages
D:\ProjA>vLab2\Scripts\pip install jupyterlab numpy pandas matplotlib
# 或者指定使用虛擬環境 vLab2 裡的 python 帶出 pip 模組來安裝 packages
D:\ProjA>vLab2\Scripts\python -m pip install jupyterlab numpy pandas matplotlib
如何執行 python file
在 windows 平台上執行 python script 有下列幾個方法 (以 test.py 為例):
- windows 視窗下滑鼠雙擊 test.py檔
- 命令提示字元視窗下輸入 python test.py
- 命令提示字元視窗下輸入 py test.py
- 命令提示字元視窗下輸入 test.py
- 方法一基本上是一閃就過去了, 所以沒有什麼用. 除非執行的 .py 檔會開啟互動視窗 (或者有 python 的輸入指令, 才會停一下).
- 方法二是比較通用的方法 (多平台). 但必需將 python 的安裝路徑加入到環境變數 PATH. 如果是在 Linux 平台上, 我們則可以將其中的 python 可以換成 python2, python3 python3.7 等等不同版本的. Windows 平台則必需用方法三.
- 方法三是 Windows 平台特有的. 用法前面的段落已經說過了不再重複.
- 方法四雖然也是多平台通用的方法, 但設定及作法有些不同.
- 在 Windows 上, 是依據 windows registry 的設定決定它的行為. 在安裝了 python3 的情況下在 .py 檔的註冊內容是Python.File; 而 Python.File 內則註冊了 shell/open/command 這個 key, 而它的內容則是 "C:\WINDOWS\py.exe" "%L" %* (python2.7 的內容則是 "C:\Python27\python.exe" "%1" %*, 注意: 如果 python27 比 python3 來得晚安裝, 這一部份會被覆蓋, 請你將它改回來). 所以是等同於使用py.exe 指令.
Python.File 的註冊內容
- 如果你輸入 test.py 結果是跳出 VS code 視窗, 可以直接找到 VSCode.py 這個註冊位置, 然後直接將它刪除即可.
VSCode.py 的註冊內容
- 在 Linux 平台上的設定由二個部份組成. 首先是 python script 檔要加上 x 權限 (執行權限), 再來還要在 script 檔的第一行加上一個所謂的 shebang(註七) 如下:
#! /usr/bin/env python
或者是
#! /usr/bin/env python3 - 如果 script 是 python2 的版本請用第一個 python, python3 的 script 則請用第二個 python3. 當然如果需要指定 python 的次版本也是可以的, 如: /usr/bin/env python3.8.
- 同時建議你用 /usr/bin/env 指令來帶動 python 或 python3, 而不是直接使用 /usr/bin/python. 二者的差異在 env 指令是由環境變數 PATH 中找後面的 python 或 python3, 而不是直接使用絕對路徑來指定 python 或 python3 的路徑(註八).
- 這個 shebang 設定在 Windows 平台上也相容, 同時動作也是一致的.(註九)
註七: shebang 是 hashbang 的另一稱呼. 參考維基百科 https://zh.wikipedia.org/wiki/Shebang
註八: 參考 StackExchange why do some python scripts begin with #!/usr/bin/env python?
註九: 在 Windows 平台上, shebang 的行為也一樣受 windows registry 控制. 如果你在安裝 Python 2.7.18 時取消第一個選項 'Register Extensions', 那麼下面的 shebang 設定
#! /usr/bin/env python
或者
#! /usr/bin/python
依然可以是使用 python3 執行. 至於安裝 Python 2.7 時沒有修改預設行為的可以考慮將 Python 2.7 解安裝再重新安裝. 至於到底是哪一個 registry 控制它要再等等 (需要一點時間實驗).

請問一下, 我在 windows 裡, 裝了2個版本: 3.7 和 2.7 (3.7先裝) 執行 py 會執行 3.7 版本, 但如果直接執行 python script (ex: test01.py) 系統會用 2.7 版本, 必須要用 py -3 test01.py 才能跑 3.7 版本. 要如何修改, 才能直接執行 script 時, 直接用 3.7版本? 謝謝.
麻煩你先檢查一下環境變數 PATH 的設定 echo %PATH% 看一下是不是有 Python 2.7 的路徑在𥚃面,有的話拿掉就可以了 建議你只將 ‘一個’ Python 版本路徑加入環境變數 PATH (主要常用的)。多個 python 版本加入 PATH 中,在後面的都是沒有用的
我的 PATH 環境變數裡, 沒有 Python 2.7, 也沒有 Python 3.7 路徑, 所以才覺得很奇怪, 為什麼跑 py 會執行 3.7, 但在dos視窗, 執行script 卻跑 2.7 版本, 必須要 py -3 xxx 才能跑 3.7
嗯! 我看錯了, 你的主要問題應該是出在 '直接執行 python script (ex: test01.py) 系統會用 2.7 版本' 那應該是要麻煩你執行 regedit (或者是'登錄編輯程式') 把 '電腦\HKEY_CLASSES_ROOT\Python.File' 這一段 registry 整個 '滙出' 存下來, 寄給我, 才有辦法幫你查. 或者你自己看一下: '電腦\HKEY_CLASSES_ROOT\.py' 的 '預設值' 內容是不是 'Python.File' 還有 '電腦\HKEY_CLASSES_ROOT\Python.File\Shell\open\command' 的 '預設值' 內容是不是 '"C:\WINDOWS\py.exe" "%L" %*'
我的 '電腦\HKEY_CLASSES_ROOT\Python.File\Shell\open\command' 的 '預設值' 內容是 "C:\Python27\python.exe" "%1" %* 改為你說的 "C:\WINDOWS\py.exe" "%L" %* 直接執行 script 就會跑 3.7 了, 感謝..
不客氣
請教一問題. 我在 win7 裡, 裝了 python3 和 python2 在 DOS 視窗裡, 直接打 py 或 直接執行 xx.py 的檔案, 都會跑 python 3 的版本.. 但如果在 xx.py 的檔案前面, 加上以下這行(給linux用的) #!/usr/bin/python 結果直接執行, 會跑 python2: xx.py 如要用 python3 執行, 要用以下指令: py -3 xx.py 請問, 這是正常的情形嗎?
你的 'py xx.py' 是出現 python2 還是 python3 呢? 如果是 python2 應該是 python3 安裝有問題. 請檢查以下狀況: 1. 你的 'py -0' 出現一個版本還是二個版本呢? 2. 你的 python 都是 windows 版的嗎? 3. 二者都是用相同的 '系統安裝' 或者 '用戶安裝' 嗎? 可以請查一下 Windows registry HKCU\SOFTWARE\Python\PythonCore, 和 HKLM\SOFTWARE\Python\PythonCore 是否 python2, python3 都出現在同一地方. 4. 是否有 py.ini, 參考 "py.exe如何決定用哪一個版本的 python.exe ?" 段落. (非必要不應該存在)
1) py -0 出現二個版本: Installed Pythons found by py Launcher for Windows -3.7-64 * -2.7-64 2) 都是 windows 版本 3) 我忘了是怎麼裝的, 但registry裡, python路徑在不同位置: C:\Python27 C:\Users\xxx\AppData\Local\Programs\Python\Python37 4) 沒有 py.ini 謝謝.
選擇先解安裝,再重新安裝其中一個 讓二者都是 ‘系統安裝’ 或是 ‘用戶安裝’ 然後注意一下 PATH 裡, python37 的路徑是否在 python27 之前. 還有 '電腦\HKEY_CLASSES_ROOT\Python.File\Shell\open\command' 的 '預設值' 內容如果是 "C:\Python27\python.exe" "%1" %* 請改為 "C:\WINDOWS\py.exe" "%L" %*
我把 python3 重新安裝, registry裡, python 2/3 就在同一地方了, 路徑分別是: C:\Python27 C:\Program Files\Python37\ 但結果還是一樣.. 電腦\HKEY_CLASSES_ROOT\Python.File\Shell\open\command 裡'預設值' 已是 "C:\WINDOWS\py.exe" "%L" %* 找到一個網址: https://docs.python.org/3/using/windows.html 如果理解沒錯, 根據 3.8.1.3. From a script 的描述, script 裡, 單獨寫 'python' 在 windows 就是會跑 python2, 這是為了與 linux compatible... 可能是這個原因吧?? 謝謝.
嗯, 學習了 試了一下, 確實如此. 多謝... 2021/09/15 我多加了一個段落, 說明這個現象及一些相關問題如何解決 2021/09/23 有找到解決方法了.
請教一下~ (1) 是不是 python -m venv myVenv 這套命令無法用來指定欲安裝的 python 版本號? (即無類似 conda create -n myVenv python=3.8 的操作法) 完全只能仰賴 "(先) 裝欲裝版本至全域, (再) 利用 py -已裝版號 -m venv myVenv" 的作法? (2) 是不是移除虛擬環境只有把 myVenv 資料夾刪了一途? (即無類似 conda remove -n myVenv --all 的操作方法) ... 先謝過~
Q(1)Yes. Q(2)Yes. 其實 conda 這種作法有好有壞, 優點是: 機器裡有多少 python 的 virtual environment 一清二楚 (因為一份 ml 用的 virtual environment 真的不小) 缺點是: 只能用指令刪除 virtual environment. 還有一個缺點: 一切要等 conda 把相關穏定版本發布了才能用新版本的功能, 這個對一般只注重在 '命題' 本身的人員來說或許是好處. 但對於剛入手研究 '計算機環境' 的人員就非常的慘了...
幫補充一下~ 剛試了一會, 發現一個麻煩點, 讓我感覺 venv 真的有點雞肋 (vEnv3) D:\ProjA>pip install ... 會用到外面的 pip (非 vEnv3 的), 包會被裝到外面去 (vEnv3) D:\ProjA\...\Scripts>.\pip install ... 用到 vEnv3 的, 才會裝到 vEnv3\Lib\site-packages 裡 而且即便已進虛擬環境 (vEnv3) D:\ProjA>, 一樣無法直接使用 pip, 必須下對路徑才有
不會吧? 我一直以來都是直接在 venv 環境中用 pip 指令安裝, 從來都沒出過錯. 你不會是 conda 移除不乾淨吧? 或者 activate venv 後又修改了環境變數 PATH? 試者查一下: 1. 麻煩用 'where pip' 指令看一下, 到底系統是抓到哪一個路徑下的 pip 指令 (應該是 'your_venv\Script\pip.exe'). 2. 麻煩用 'where python' 指令看一下, python 是不是一樣是 'your_venv\Script\python.exe' 3. 還有用 'python -m site' 指令, 查一下 'sys.path' 是否都是正確的優先使用 your_env 下的東西 如果你安裝過 conda 又移除了, 或者和 conda 混用那一定要小心的確認再確認. conda 在 windows 環境幹了非常多的設定以保障自己的環境是OK的, 但大部份都是多餘而且會引發其他 windows 原生環境的 python 出錯.
(我註冊了帳號來回上一篇, 同人) 狀況確實如前所述~ 我裝的是 python 3.10.0 只要 prompt 不在 \my_venv\Scripts> 目錄下, 即使已 activated, 'where pip' & 'where python'的結果都是 "資訊: 找不到提供模式的檔案。" 也就是說, 啟動 my_venv 環境後, 除非到了裝著 pip & python 的 Scripts 目錄底下, 否則 .\python 跟 .\pip 都是找不到這兩個執行檔的
所以你的 python 路徑是錯的, 'sys.path' 也是有問題的...
(自回上篇) 剛又試了一次 py -3.8 -m venv my_venv308, 終於發現原因了~ 原來是因為我上面出錯的 my_venv310 的資料夾曾經被我拖到別的目錄下過~ 所以導致 activate 腳本裡面的 VIRTUAL_ENV 環境變量發揮不了作用的關係 ... 不過, 目前情況已如版大全文所述, 一切正常了~ 謝謝版大的回覆, 讓我能進一步地發現問題所在~ Thanks
:) 解決就好. 另外, 我在 https://magicjackting.pixnet.net/blog/post/225049637 這一篇有提過不可以移動 vnev.