前言

有使用 python 的話
應該都對 pip 不會感到陌生吧

但直接使用 pip install 的話
就會把 packages 都裝到全局環境(global environment)
若是不同的 project 有需要用到不同版本的 packages
把版本給換個兩遍就已經足以搞得世界大亂了

所以建立一個虛擬的運行環境
把不同 project 用到的 packages 分隔開來是很有必要的
venv 就是我們要用到的工具


安裝 venv

如果你已經安裝了 python 3.3 或以上的版本
那麼恭喜你
你的 venv 工具已經被安裝好了

若你使用的 python 版本是 3.2 或以下的話
請考慮使用 virtualenvconda 等第三方虛擬環境建立工具
這些就不包含在本篇了


建立虛擬環境

首先,在你的 project 的根目錄(下簡稱為「根目錄」)下運行這句

python -m venv <path to store the virtual environment>

一般而言是建議把虛擬環境放置到根目錄的 venv 或是 .venv
上面的那句就會變得長成這樣

python -m venv .venv

等它跑完之後
你的虛擬環境就建立完成了


啟用虛擬環境

在建立好之後還需要啟用你建立的虛擬環境
請根據你目前使用的操作系統來採取不同的動作
當你成功啟動虛擬環境後
你會在路徑的左側位置看到虛擬環境資料夾的名稱
就像這樣

然後在這個視窗運行的和 python 有關的指令
都會在這個虛擬環境中運行了

 

Windows

在 Windows
你可以選擇使用 cmd (command prompt)
或是 PowerShell 來啟動虛擬環境

cmd (command prompt)

在 cmd 運行這句指令(command)

.\<path to store the virtual environment>\Scripts\activate.bat

如果你的虛擬環境放了在根目錄的 .venv
你就可以在根目錄用 cmd 運行這句

.\.venv\Scripts\activate.bat

待它運行完後就成功在目前的視窗啟動虛擬環境了

 

PowerShell

使用 PowerShell 運行這句指令(command)

<path to store the virtual environment>\Scripts\Activate.ps1

如果你的虛擬環境放了在根目錄的 .venv
你就可以在根目錄用 PowerShell 運行這句

.\.venv\Scripts\Activate.ps1

待它運行完後就成功在目前的視窗啟動虛擬環境了

啟動錯誤

有些在跑完上面那句之後會看到一個類似這樣的錯誤

..venv\Scripts\Activate.ps1 : 因為這個系統上已停用指令碼執行,所以無
法載入 ….venv\Scripts\Activate.ps1 檔案。如
需詳細資訊,請參閱 about_Execution_Policies,網址為 https:/go.microsof
t.com/fwlink/?LinkID=135170。

這是因為 Windows 出於安全考慮
停用了不知名的 script 在 PowerShell 運行的能力
官方給出的解決方法是在 PowerShell 運行下面這句

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

這句的意思是允許運行本地建立的或是由可信發佈者建立的 script
只需要運行一次
之後就不會再被上面的錯誤給擋住了

如果你想更安全一點的話
也可以把這個權限更改限制到目前這個 PowerShell 視窗
就像這樣

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

不過這樣的話你下一次打開另一個 PowerShell 視窗時
又要再一次設置運行權限了

在設置完權限後再跑一次 activate script
就像這樣

.\.venv\Scripts\Activate.ps1

恭喜你成功啟動虛擬環境了

 

macOS / Linux

請使用 terminal 運行這句指令

source <path to store the virtual environment>/bin/activate

如果你的虛擬環境放了在根目錄的 .venv
那你就可以在根目錄運行這句

source ./.venv/bin/activate

待它運行完後就成功在目前的視窗啟動虛擬環境了


安裝 packages 到虛擬環境

在啟動了虛擬環境後
你在這個視窗安裝的 python packages
就只會被安裝到目前的虛擬環境
不會影響到其他的虛擬環境或是全區環境

而安裝 packages 的方式也和平常一樣使用 pip 即可
下面是一個例子

pip install numpy

退出虛擬環境

要退出也很簡單
把視窗直接關掉就可以了 ((不是
在虛擬環境運行這句就可以了

deactivate

刪除虛擬環境

要刪除虛擬環境也非常簡單
直接把虛擬環境的資料夾刪除就可以了

比如說
如果我在根目錄運行了這句來建立虛擬環境

python -m venv .venv

我直接把根目錄內的 .venv 資料夾刪掉即可


使用指定的 python 版本

除了可以隔離 packages
你也可以為你的虛擬環境設置使用指定的 python 版本
設置的方法也非常簡單
直接以你想使用的 python 版本來建立虛擬環境即可
當然,你需要先安裝好該 python 版本

比如說
你想使用 python 3.9 來建立虛擬環境
你可以運行下面這句命令

python3.9 -m venv .venv

 

Windows error

即便你安裝了該版本的 python
如果你是使用 Windows 的話
你也可能會看到這樣的錯誤

‘python3.9’ 不是內部或外部命令、可執行的程式或批次檔。

這可能是因為你使用了安裝檔來安裝 python
而經由安裝檔安裝的 python 可能會沒有帶着版本號的 python exe 檔
也就是沒有 python3.9.exe

如果你是 Windows 用戶的話
我更建議經由 Microsoft Store 來安裝 python
而不是從官網下載安裝檔來安裝
這樣可以避免這個問題

當然
你想要手動把 python.exe 重命名為 python3.9.exe 也都是可以的 =]

更換 python 版本

在虛擬環境內運行 python 指令
就會自動使用建立虛擬環境時使用的 python 版本
(其實是整個 python 執行檔都放到你的虛擬環境資料夾了

如果你想要更換虛擬環境內的 python 版本
你可以用你想要使用的版本運行 --upgrade 指令
比如說這樣

python3.10 -m venv --upgrade .venv

結語

venv 是個非常方便的工具
python 自帶
語法簡單
容易上手

在學會了之後也能避免很多版本上的問題
和 conda 這些第三方的工具相比
它們都各有優勢
不論是從那個角度看
學了也沒壞的

祝各位不會再因版本衝突而煩惱 =P


參考資料

https://docs.python.org/3/library/venv.html

https://zhuanlan.zhihu.com/p/341481537

https://geek-docs.com/python/python-ask-answer/406_python_how_to_specify_python_version_used_to_create_virtual_environment.html

https://learn.microsoft.com/zh-tw/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.5

https://numpy.org/install

https://stackoverflow.com/questions/10218946/upgrade-python-in-a-virtual-environment

https://zhuanlan.zhihu.com/p/392040354


廣告欄位
本站致力於為大家提供乾淨舒服的獲取資訊途徑
並盡量把廣告對閱讀體驗的影響降至最低
若想支持本站營運
可點擊此處打開廣告
廣告的內容並非由本站控制
請小心驗證廣告內容
感謝各位看客的支持 ( •̀ ω •́ )y


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Trending