Mike的Python學院

Python 3、Python

Mike Ku

Learn Code With Mike品牌創辦人

2022/01/27

有效管理Python套件(Package)的工具及概念(下)

Q: pipenv套件管理工具
利用pip套件管理工具所安裝的套件(Package),是在全域環境(Global)中,當今天有兩個專案需要beautifulsoup4不同的版本,這時候將無法達成,因為全域環境無法並存兩個相同的套件(Package)。
所以就可以使用整合了pip及虛擬環境的pipenv套件管理工具,為專案建立一個獨立的虛擬環境(Virtual Environment),並且將所需的套件(Package)安裝在裡面,這樣其中的套件(Package)就不會和全域環境及其他專案互相影響。
要使用pipenv套件管理工具,需利用pip來進行安裝,如下範例:
$ pip install pipenv
安裝完成後,即可透過pipenv套件管理工具來為專案建立虛擬環境及安裝套件(Package),如下範例:
$ pip install beautifulsoup4
範例中pipenv套件管理工具為專案建立一個虛擬環境,並且在裡面安裝beautifulsoup4套件(Package)。而這個虛擬環境在哪裡呢?可以利用pipenv --ven來查看。
各位可以看到,虛擬環境並不在我們的專案中,這讓我們的專案容量,不會受到開發規模擴大時,隨著安裝的套件(Package)增多而越來越大。有了虛擬環境,接著即可透過pipenv shell進入,如下範例:
$ pip shell
執行後會發現目錄的前方多顯示了虛擬環境的名稱,代表已成功進入。這邊要注意的地方是,由於pipenv套件管理工具在虛擬環境中安裝套件(Package),所以必須進入虛擬環境後再執行應用程式,否則其中所引用的套件(Package)將會找不到而發生錯誤。
另外,利用exit指令離開虛擬環境。這時候在目錄前面則不會顯示虛擬環境的名稱。
Q: Pipfile及Pipfile.lock檔案
當執行pipenv install指令安裝套件(Package)時,會發現專案中增加了兩個檔案,分別為Pipfile及Pipfile.lock,這兩個檔案負責管理專案的套件相依性及版本。
其中的source區塊指明了安裝套件的來源。dev-package區塊為測試環境所需的套件(Package)。而packages區塊包含了專案所安裝的套件(Package),可以看到beautifulsoup4套件等於 * 符號,代表最新的版本。最後requires區塊則是執行此專案所需的Python版本。
而Pipfile.lock是一個JSON格式的檔案,其中列出了各套件詳細的版本及相依性。beautifulsoup4 4.8.2套件(Package)的相依性套件有soupsieve 1.9.5,當在安裝beautifulsoup4套件時,Python會自動將其相依性套件一起安裝,並且記錄於Pipfile.lock檔案中。
有了Pipfile及Pipfile.lock檔案,就可以很容易的在不同的電腦中,快速建立一模一樣的開發環境。舉例來說,各位可以把剛才所建立的虛擬環境檔案(\.virtualenvs\HelloPython-B6krgkNh)刪除,來模擬另一台電腦中只有專案原始碼而沒有虛擬環境,這時候只要執行以下指令:
$ pip install
無須指定任何套件名稱,pipenv套件管理工具即會自動依據專案中,Pipfile檔案的package區塊來安裝套件(Package)。
如果想要基於Pipfile.lock檔案,利用其中記錄的特定版本套件來安裝,則可以執行--ignore-pipfile指令,即忽略Pipfile檔案,而依據Pipfile.lock檔案進行安裝。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike(https://www.learncodewithmike.com/2020/02/python-pip-and-pipenv.html
)網站觀看更多精彩內容。
4 0 1041 2