還記得剛接觸 Python 的時候,老師第一句話就是:「同學們,我們先裝 Anaconda!」
於是大家電腦裡都塞進去一個肥大到不行的 Anaconda,容量動輒幾個 GB。那時候覺得很方便,因為裡面什麼都有,但一踏進公司才發現 —— 大家都嫌 Anaconda 太肥大、不靈活,根本沒人用
不僅如此,公司專案用的requirements.txt
更是頭大。明明照著文件安裝,卻總是出現各種奇奇怪怪的錯誤:ERROR: Cannot install packageA==1.2 and packageB==3.4
because these package versions have conflicting dependencies.
這種「依賴地獄」是不是很熟悉?別擔心,今天我要介紹的三個神器,就是來拯救我們的!
現代 Python 開發的三把利劍
1. pyenv — 你的多功能廚房
- 功能: 管理不同版本的 Python 直譯器。
- 比喻: pyenv 就像是你的廚房風格或食譜流派。你想做一道日式料理,需要特定的爐具和工具(Python 3.9);另一道中式料理則需要大火快炒的炒鍋(Python 3.8)。pyenv 讓你可以在同一台電腦上,輕鬆地切換不同風格的「廚房」,每個專案都能使用自己需要的 Python 版本,互不干擾。
- 使用方式:
# 輕鬆安裝多個 Python 版本
pyenv install 3.8.10
pyenv install 3.9.5
pyenv install 3.11.0
# 為不同專案指定不同版本
pyenv local 3.9.5 # 這個專案用 3.9.5
pyenv local 3.11.0 # 那個專案用 3.11.0
2. Poetry:為你的佳餚準備精準的食材
- 功能: 管理專案的套件依賴與虛擬環境。
- 比喻:Poetry 就像是為你每道佳餚(專案)準備的專屬精準食材清單。它不僅會記錄你需要哪些套件(如
pandas
、numpy
),還會仔細鎖定所有次級依賴的確切版本,寫入一個poetry.lock
檔案。當你把這個食譜給同事,他只需一個指令,就能完美複製出與你一模一樣的食材,保證菜餚味道(程式運行結果)完全一致! - 使用方式:
# 建立新專案(自動建立虛擬環境!)
poetry new my-awesome-project
cd my-awesome-project
# 添加依賴(自動解決版本衝突!)
poetry add requests pandas
poetry add --dev pytest black
# 安裝所有依賴(精準鎖定版本!)
poetry install
3. pipx:你的廚房通用工具箱
- 功能: 獨立安裝和運行 Python 應用程式。
- 比喻: pipx 就像是你的廚房通用工具箱。這裡面放的不是食材,而是你隨時會用到的「工具」:一把好用的菜刀(程式碼格式化工具
black
)、一個精準的量杯(靜態檢查工具pylint
)。這些工具不屬於任何一道菜的「食材」,而是你作為廚師,為了提高效率而使用的必備品。pipx
確保這些工具獨立於你的專案,不會與你的專案食材發生衝突。 - 使用方式:
# 安全地安裝全域工具
pipx install black # 程式碼格式化
pipx install flake8 # 程式碼檢查
pipx install jupyter # Jupyter Notebook
pipx install Spdyer # Spdyer
# 臨時使用某個工具(不用安裝!)
pipx run cowsay "Hello Python!"
結語:告別混亂,擁抱專業
總而言之,pyenv + Poetry + pipx 這三位一體,完美解決了過去的痛點。pyenv 讓你自由選擇 Python 版本,Poetry 則提供了一個可靠、可複製的專案環境,pipx 則妥善管理了你的通用工具。
當你擁抱這套工具後,你將會發現 Python 的開發環境變得輕巧、專業且可靠。快動手試試吧,從此告別混亂,讓你的程式碼之路走得更順暢!