Python 開發環境初學者指南:理解 pyenv、pip、PyPI、venv 與 Poetry
更新日期: 2024 年 11 月 23 日
本文為 Python 安裝教學,第 6 篇:
- 如何使用終端機,將 Python 更新到最新版本(Windows 使用者)
- 新手指南:什麼是 Python 的 PyPI 套件?
- 新手指南:Python 虛擬環境(venv)簡介
- 新手指南:Python Poetry 套件管理工具簡介
- 在Windows 上安裝Poetry 的詳細指南
- Python 開發環境初學者指南:理解pyenv、pip、PyPI、venv 與Poetry 👈 所在位置
在開始學習 Python 的旅程後,你可能會發現,除了安裝 Python,還需要瞭解和安裝一些工具來管理 Python 的環境和套件。
像是 pyenv
、pip
、PyPI
、venv
和 Poetry
,每個工具都有不同的用途與作用。
初學者可能會覺得這些工具名稱有些相似,但它們的功能和使用情境卻大不相同。
這篇文章將詳細解釋每個工具的作用、適合的使用情境,並給予你實際操作上的建議,幫助你更有效率地管理 Python 開發環境。
什麼是 Python 開發環境?
在程式開發中,開發環境指的是你用來編寫、測試和執行程式的工具和設定。
在 Python 開發中,這些環境管理工具幫助你:
- 安裝和管理不同的 Python 版本
- 隔離和管理專案的套件依賴
- 安裝、更新和移除套件
以下我們會依序介紹這些工具的用途和使用情境。
pyenv:管理多個 Python 版本
pyenv 是什麼?
pyenv
是一個用來管理不同 Python 版本的工具。
透過 pyenv
,你可以安裝多個 Python 版本,並根據專案的需求快速切換 Python 版本。
這對於在不同專案之間切換,或是因應舊專案的 Python 版本要求尤為有用。
什麼時候應該使用 pyenv?
當你需要同時安裝多個 Python 版本,或是不同專案需要不同的 Python 版本時,pyenv
是個非常有用的工具。
例如,當你需要開發一個以 Python 3.8 為基礎的專案,且另有一個專案需要 Python 3.10 時,你可以透過 pyenv
安裝兩個版本,並根據專案需求切換 Python 版本。
pyenv 的基本操作
- 安裝特定版本的 Python:
pyenv install 3.10.0
- 列出已安裝的 Python 版本:
pyenv versions
- 切換全域 Python 版本:
pyenv global 3.10.0
- 針對特定專案切換 Python 版本:
pyenv local 3.8.0
pip 與 PyPI:安裝和管理套件
pip 是什麼?
pip
是 Python 的套件管理工具,用來安裝、管理和移除 Python 套件。
透過 pip
,你可以輕鬆地將第三方套件(例如數據處理套件 pandas
或網頁框架 Flask
)安裝到專案中。
PyPI 是什麼?
PyPI
(Python Package Index)是一個線上套件庫,存放了大量的第三方 Python 套件。
pip
默認會從 PyPI 上下載和安裝套件。
這些套件由開發者社群共享,並且涵蓋了各式各樣的功能和工具。
什麼時候應該使用 pip 和 PyPI?
只要你的專案需要第三方套件(不論是處理數據、網頁開發或是機器學習),都需要使用 pip
從 PyPI 上安裝這些套件。
pip
和 PyPI
是所有 Python 專案中最基本的依賴管理方式。
pip 的基本操作
- 安裝套件:
pip install requests
- 列出已安裝的套件:
pip list
- 升級套件:
pip install --upgrade requests
- 移除套件:
pip uninstall requests
venv:虛擬環境的基礎
venv 是什麼?
venv
是 Python 內建的虛擬環境管理工具。
虛擬環境可以將每個專案的套件依賴隔離開來,讓不同專案使用不同版本的套件,避免套件之間的相容性問題。
什麼時候應該使用 venv?
在開發每個新專案時,建立一個專屬的虛擬環境是一個良好的習慣。
venv
可以幫助你確保各個專案之間的套件互不影響,尤其是當專案需要使用不同版本的套件時。例如:
- 如果 A 專案需要某個套件的 v1.0 版本,而 B 專案需要 v2.0 版本,使用虛擬環境可以防止套件版本衝突。
套件版本衝突的詳細說明
「衝突」的意思是,若在未使用虛擬環境的情況下,直接使用 pip
安裝不同版本的套件,新安裝的版本,會覆蓋系統全域環境中的舊版本。
這是因為 Python 預設的全域環境只有一個,套件的不同版本無法共存。
例如:
- 當你在全域環境中安裝套件的 v1.0,然後又需要安裝 v1.5 時,
pip
會先刪除 v1.0 再安裝 v1.5。 - 若你再次切換需求,需要回到 v1.0,則 v1.5 會被刪除,改為安裝 v1.0。
這種版本的切換會造成專案執行失敗,尤其是當多個專案共享全域環境時,某個專案可能因為需要的套件版本被改動而無法運行。
venv 的解決方案
虛擬環境可以有效避免這種情況,因為每個虛擬環境都是一個獨立的 Python 執行環境。
每個虛擬環境都有自己的一套套件目錄,因此:
- A 專案的虛擬環境可以安裝套件 v1.0,不受其他專案的影響。
- B 專案的虛擬環境可以安裝套件 v2.0,也不會改動 A 專案的設定。
這樣可以確保專案之間的套件版本互不干擾,專案運行更加穩定。
venv 的基本操作
- 創建虛擬環境:
python -m venv myenv
- 啟動虛擬環境:
- Windows:
myenv\Scripts\activate
- macOS/Linux:
source myenv/bin/activate
- Windows:
- 停用虛擬環境:
deactivate
Poetry:現代化的依賴管理工具
Poetry 是什麼?
Poetry
是一個功能強大的依賴管理工具,它不僅能管理套件,還能自動建立虛擬環境和處理專案的套件發佈。
它將 venv
和 pip
的功能整合到了一起,並提供了更簡便的依賴管理方式。
什麼時候應該使用 Poetry?
當你的專案需求變得較為複雜,或者你希望簡化依賴管理時,Poetry
是個理想的選擇。
它會自動管理專案的虛擬環境和依賴檔案(pyproject.toml
),並且可以很輕鬆地發佈你的套件到 PyPI。
Poetry 的基本操作
- 建立新專案:
poetry new myproject
- 安裝套件並自動更新
pyproject.toml
:poetry add requests
- 啟動虛擬環境:
poetry shell
- 安裝專案所有依賴:
poetry install
常見問題(FAQ)
虛擬環境可以隔離不同專案的套件依賴,確保專案間不會發生套件版本衝突。這對於使用多個套件且版本不同的專案尤其重要。
pyenv
和 venv
有什麼不同? pyenv
是用來管理多個 Python 版本的工具,而 venv
是用來建立專案的虛擬環境。兩者可以搭配使用,例如先使用 pyenv
切換 Python 版本,再為該版本創建虛擬環境。
pip
和 Poetry
什麼時候該用哪一個? pip
是基本的套件管理工具,適合較小型專案的依賴管理。Poetry
是現代化的套件管理工具,適合更複雜的專案,因為它能自動處理依賴管理並建立虛擬環境。
對於小型或簡單的專案,安裝 Python 後直接使用 pip
和 venv
即可,不必使用 pyenv
或 Poetry
。
結語
理解這些工具的功能和用途,能讓你的 Python 開發環境更加靈活和可靠。
依據專案的需求來選擇適合的工具,能避免未來在套件管理和版本控制上碰到不必要的麻煩。
希望這篇指南能幫助你,開始管理好你的 Python 開發環境!