Python 預設的套件管理工具為 pip,開發者可以使用 pip 來安裝需使用的套件,由於 pip 屬於輕量級的套件管理工具,因此它無法處理下列兩件事
精確的套件版本
儘管開發者可以透過 requirements.txt
精確指定所需的套件版本,這些套件通常還會依賴其他套件(即間接依賴)。然而,pip 無法鎖定這些間接依賴的版本,導致每次安裝時可能使用不同版本的套件,從而產生不一致的結果。由於軟體專案通常由多位開發者協作完成,如果開發者各自電腦中安裝的套件版本不完全一致,可能會引發許多非預期的問題。例如,某個功能在開發者 A 的電腦環境中運行正常,但在開發者 B 的電腦環境中卻可能出現錯誤。
虛擬環境管理
開發者通常在同一台電腦上同時維護多個軟體專案,這些專案可能使用不同版本的套件。然而,pip 預設會將所有套件安裝在同一個目錄中,這樣就很容易導致套件版本之間的衝突。為了解決這個問題,許多程式語言會使用名為虛擬環境的方式來隔離各個專案。每個專案在獨立的環境中運行,這樣專案之間就不會互相干擾,也不會產生衝突。
雖然開發者仍可以使用 pip 並額外安裝其他工具來解決上述兩個問題,但我想推薦另一個套件管理工具 —— Poetry。Poetry 將這兩項功能整合進來,使得開發者可以通過簡單的指令來有效地管理軟體專案。接下來,我將通過範例來介紹如何使用 Poetry。
在使用 Poetry 之前,開發者需要先進行安裝。Poetry 官方文件提供了多種安裝方式,開發者可以根據自己的需要選擇合適的方法。
首先,開發者可以使用以下指令來建立專案目錄。在這個目錄中,最重要的檔案是 pyproject.toml
。開發者可以通過這個檔案來描述專案的基本資訊和管理套件。
poetry new demo-project
接著,開發者可以使用以下指令來安裝指定版本的套件。當執行指令時,終端機會顯示 Creating virtualenv...
,這是因為 Poetry 會自動為這個專案建立虛擬環境,並將所有套件安裝在這個虛擬環境中。另外,當套件安裝指令執行完畢後,目錄下會多出一個檔案 poetry.lock
。Poetry 會通過這個檔案來鎖定所有套件的版本,以確保所有開發者安裝的套件版本都是一致的。
poetry add demo-package==1.3.4
最後,開發者需要在原先的指令前面加上 poetry run,以便透過 Poetry 來運行 Python 程式碼。
poetry run python main.py
在本系列文章會在介紹各種套件時鎖定套件的版本並透過 Poetry 來安裝。如果讀者使用的套件版本與文章中所示版本差異過大,可能會導致文章中的範例程式產生非預期的錯誤。