為什麼該用 uv 取代傳統的 Python venv?
為什麼該用 uv 取代傳統的 Python venv?
你有沒有 遇過這種狀況:寫 Python 程式時,明明在自己電腦能跑,但換到同學的電腦就出錯?或者安裝了一個新套件後,之前的程式竟然跑不動了?
這就像你在房間裡亂丟衣服,最後找不到想穿的衣服一樣!今天要介紹一個超厲害的工具 uv,它就像是幫你整理房間的魔法管家,讓每個 Python 專案都有自己整齊的「小房間」。
一、什麼是 uv?為什麼它這麼厲害?
想像一下,你的電腦就像是一個大宿舍,每個 Python 專案就像是一個學生。如果所有學生都住在同一間房間,就會很亂:
- 小明要用 Pandas 1.5 做作業
- 小華要用 Pandas 2.0 做專題
- 結果兩個版本互相打架,誰的程式都跑不動!
uv 就像是宿舍管理員,它會給每個專案分配一個獨立的房間(虛擬環境),讓大家各自安心使用需要的工具。
uv 是一個用 Rust 語言製作的超快工具,它可以幫你:
- 🏠 建立虛擬環境(取代 venv)- 就像給每個專案一個獨立房間
- 📦 安裝和管理套件(取代 pip)- 就像幫你整理房間裡的物品
- 🐍 管理 Python 的不同版本(取代 pyenv)- 就像準備不同年級需要的教科書
- 🔒 建立穩定的鎖檔(lockfile)- 就像記錄每個房間裡有什麼東西
- ⚡ 快速執行工具(取代 pipx)- 就像借用工具但不用搬到自己房間
最重要的是,uv 超級快! 官 方說它比傳統方式快了 10 到 100 倍。就像從走路換成坐高鐵一樣!
二、uv 比傳統 venv 更棒在哪?
| 功能 | 傳統方法 (venv + pip) | uv |
|---|---|---|
| 速度 | 慢,重複下載套件 | 非常快,有快取功能 |
| 鎖檔 | 要另外裝 pip-tools 或 poetry | 已經內建 |
| 版本管理 | 要另外裝 pyenv 工具 | 自動下載指定版本的 Python |
| 工具執行 | 要另外裝 pipx | 直接使用一次性工具執行 |
| 易用性 | 要記很多不同工具 | 一個工具搞定全部功能 |
三、為什麼每個開發者都應該養成使用虛擬環境的習慣?
🔧 真實痛點分享:我記得剛學 Python 的時候,為了做學校作業安裝了 numpy 1.19,結果同時要做另一個專案時,發現需 要 numpy 1.21 才能跑。我天真地直接升級,結果之前的作業程式全部掛掉,當時真的快哭了!那時候我還不知道虛擬環境這個救星。
👥 團隊合作的慘痛經驗:和同學一起做專題時,我的電腦用 requests 2.31,他的電腦是 2.25,結果我們的 API 呼叫程式在我這邊跑得好好的,到他那邊就一直報錯。我們找 bug 找了整整一個下午,最後才發現是版本不同惹的禍!
💡 問題 1:為什麼我們需要虛擬環境?
你可以想像一下,如果你和室友共用一個書桌:
- 你正在寫數學作業,需要計算機和直尺
- 室友要畫圖,需要彩色筆和橡皮擦
- 如果你們的工具混在一起,是不是很容易拿錯?
虛擬環境就像給每個人一個專屬的文具盒,這樣:
- 數學作業不會被畫圖工具干擾
- 每個專案都能用自己需要的「工具版本」
- 就算安裝新工具,也不會影響到其他專案
💡 問題 2:什麼時候需要用虛擬環境?
- 同時進行多個 Python 專案(就像同時修好幾科課程)
- 和同學合作做專題(確保大家的「工具箱」一模一樣)
- 想試用新套件但怕弄壞現有程式(就像想換新手機 App 但怕刪到重要資料)
💡 問題 3:建立好習慣的簡單步驟
- 每次開新專案,第一件事就建立虛擬環境(就像搬進新房間先整理衣櫃)
- 用
requirements.txt記錄需要哪些套件(就像列購物清單) - 記得把
.venv/加到.gitignore(不要把整個房間都上傳到 GitHub)
💡 問題 4:新手常見疑問解答
Q:虛擬環境會佔用很多硬碟空間嗎? A:每個虛擬環境大約 10~30MB,就像一個小遊戲的大小,完全不用擔心!
Q:虛擬環境會不會把我的 Python 弄壞? A:絕對不會!虛擬環境就像在沙盒裡玩沙,只在自己的小天地裡運作,對外面的世界完全沒影響。
Q:忘記啟動虛擬環境怎麼辦? A:沒關係!只要重新啟動就好,就像忘記帶文具盒去教室,回去拿就好了。
✅ 小結:虛擬環境就像專屬工具箱 使用虛擬環境就像給每個專案準備一個專屬的工具箱,裡面放著這個專案需要的 所有工具。這樣不同專案就不會互相干擾,也能確保和同學合作時大家用的工具都一樣。
四、超簡單的 uv 使用教學(連國中生都能學會!)
🎯 親身經歷分享:剛開始學 Python 時,光是搞懂 venv、pip、requirements.txt 這些東西就花了我好久時間。每次要開新專案都要敲一堆指令,有時候還會忘記步驟。自從用了 uv 之後,真的變得超簡單,一個指令就搞定!
以下步驟適合 Windows、macOS 和 Linux 使用者:
🚀 步驟 1:安裝 uv(只要做一次就好!)
Windows 使用者:
# 先安裝 pipx(如果還沒有的話)
pip install pipx
# 用 pipx 安裝 uv
pipx install uv
macOS 與 Linux 使用者:
# 官方推薦的安裝方式
curl -LsSf https://astral.sh/uv/install.sh | sh
💡 小提醒:就像下載 Line 或 Instagram 一樣,只要下載一次就可以一直用囉!
🏠 步驟 2:建立你的專案「小房間」
# 建立一個新的虛擬環境(就像蓋一間新房子)
uv venv
# 想要指定 Python 版本嗎?(就像選房間要幾坪大)
uv venv --python 3.12
🔑 步驟 3:進入你的專案房間
Windows 使用者:
.\.venv\Scripts\activate
macOS 與 Linux 使用者:
source .venv/bin/activate
🎉 成功指標:看到終端機前面出現
(.venv)就表示你已經進入虛擬環境了!就像看到房門上貼著你的名字一樣。
📦 步驟 4:安裝你需要的工具(套件)
# 安裝單一套件(超快!)
uv pip install pandas
# 安裝多個套件
uv pip install pandas requests matplotlib
# 從檔案安裝所有套件(就像照購物清單買東西)
uv pip install -r requirements.txt
⚡ 速度體驗分享:以前用 pip 安裝 pandas 要等 30 秒,用 uv 只要 3 秒!就像從撥接網路升級到光纖一樣爽快!
📝 步驟 5:記錄你用了哪些工具(製作清單)
# 建立套件清單(就像列出房間裡有什麼家具)
uv pip freeze > requirements.txt
# 建立更精確的鎖檔(確保每次都用相同版本)
uv pip compile requirements.in -o requirements.lock
# 依照鎖檔安裝(確保環境完全一樣)
uv pip sync requirements.lock

