2種包管理工具:pip和pipenv

一路向北321發表於2024-03-22

一、pip

pip 是 Python 的包安裝器,它用於安裝和管理 Python 包,它透過requirements.txt檔案來管理專案所依賴的包

1、生成requirements.txt檔案:pip freeze > requirements.txt

2、安裝requirements.txt依賴:pip install -r requirements.txt

3、啟用虛擬環境:source myenv/bin/activate

二、pipenv

pipenv 是一個Python開發工作流的包管理工具,它旨在為專案提供更好的依賴管理和環境隔離。

1、Pipfile

Pipfile 是一個TOML(Tom's Obvious, Minimal Language)格式的檔案,它記錄了專案的直接依賴(類似於 requirements.txt),同時提供了更多的後設資料和一個更易讀的格式。在 Pipfile 中,你可以指定包的版本號,也可以選擇使用版本範圍或者星號(*)來允許更靈活的版本更新。

2、Pipfile.lock

Pipfile.lock 是由 pipenv 自動生成的一個JSON格式的檔案,它包含了所有依賴(包括間接依賴)的精確版本號和雜湊值。這個檔案的目的是確保在不同環境中安裝相同版本的依賴,以此來提供一致的開發、測試和生產環境。

3、對於新建立的專案

(1)初始化虛擬環境和Pipfile: 在專案的根目錄下執行 pipenv 命令將會自動建立一個虛擬環境(如果尚未存在)和一個新的 Pipfile。如果你已經知道你的專案將會使用哪個Python版本,你可以指定這個版本:

pipenv --python 3.8
這個命令將會建立一個使用Python 3.8版本的虛擬環境。如果你不指定版本,pipenv 將使用系統中的預設Python版本。
(2)安裝專案依賴: 透過 pipenv install 命令安裝專案的第一個包,Pipfile 將會被更新,同時 Pipfile.lock 也會被建立:
pipenv install requests
這個例子中,requests 是作為專案依賴被安裝的一個示例Python包。你可以替換成你專案實際需要的任何包。
(3)生成Pipfile.lock: 當你透過 pipenv install 安裝包時,Pipfile.lock 會自動生成。你也可以透過下面的命令手動生成或更新它:
pipenv lock
這個命令會基於 Pipfile 中的內容生成或更新 Pipfile.lock 檔案,確保所有依賴的版本都被鎖定。

以上步驟完成後,你的專案目錄下應該會有一個 Pipfile 和一個 Pipfile.lock 檔案,分別記錄了專案的直接依賴和所有依賴的具體版本資訊。這樣,其他人在使用 pipenv install 命令時,就會根據 Pipfile.lock 中鎖定的版本來建立相同的開發環境。

4、使用Pipfile和Pipfile.lock

(1)要使用 PipfilePipfile.lock 管理專案依賴,你需要安裝 pipenv。可以透過 pip 安裝它:

pip install pipenv

(2)下載了一個新專案後,專案中已經有PipfilePipfile.lock,可以使用以下命令來安裝 Pipfile 中指定的依賴:
pipenv install

這個命令會建立一個新的虛擬環境(如果尚未建立),並在該環境中安裝 Pipfile 中列出的所有包。如果存在 Pipfile.lockpipenv 將根據鎖檔案中的精確版本來安裝依賴,以確保環境一致性。

(3)安裝新包並更新 PipfilePipfile.lock,可以使用:

pipenv install <package>
(4)解除安裝包並從 PipfilePipfile.lock 中移除,可以使用:
pipenv uninstall <package>
(5)如果你想啟用虛擬環境,可以使用:
pipenv shell

三、pipenv初始化專案

1、確認是否已安裝 pipenv:
pip show pipenv
如果命令返回了 pipenv 的資訊,那麼 pipenv 已安裝。如果沒有返回任何資訊,那麼你需要安裝 pipenv
2、安裝 pipenv:
如果 pipenv 還沒��安裝,你可以使用 pip 來安裝它。由於你正在使用 zsh,建議使用以下命令以確保 pipenv 安裝到使用者級別的目錄,避免需要管理員許可權:
pip install --user pipenv
3、新增 pipenv 到環境變數:安裝 pipenv 後,確保 pipenv 的可執行檔案路徑已新增到你的環境變數中。
(1)查詢pipenv的安裝目錄:
pip show pipenv

這個命令會顯示 pipenv 包的詳細資訊,包括它的安裝位置。查詢 Location: 行,它會告訴你 pipenv 的安裝目錄。

(2)確定pipenv可執行檔案的目錄:
通常,pipenv 的可執行檔案位於該安裝目錄的 bin 子目錄下,eg:
如果 Location: 顯示的路徑是 

/Users/admin/Library/Python/3.7/lib/python/site-packages
那麼 pipenv 的可執行檔案可能位於 

/Users/admin/Library/Python/3.7/bin
 
 (3)新增到環境變數:編輯 ~/.zshrc 檔案,新增:
export PATH="/Users/admin/Library/Python/3.7/bin:$PATH"
 儲存並關閉後執行:
source ~/.zshrc

4、確認pipenv的可執行檔案已經被正確新增到環境變數中

which pipenv
這個命令會輸出 pipenv 可執行檔案的完整路徑,如果 pipenv 已經正確安裝並且路徑已經新增到環境變數中。

如果 which 命令沒有返回任何輸出,這可能意味著 pipenv 沒有安裝,或者其安裝路徑沒有新增到環境變數中。在這種情況下,您可以嘗試使用 pip 查詢 pipenv 的安裝位置:

 5、使用pipenv建立一個新的虛擬環境

開啟終端導航到專案的根目錄,分別執行 以下命令
pipenv --python 3.10
pipenv install
pipenv --python 3.10 來建立一個新的虛擬環境。如果已經存在與 Pipfile 匹配的 Python 版本的虛擬環境,pipenv 將會複用它,而不是建立一個新的。
pipenv install 來根據 Pipfile.lock 安裝所有依賴。這將確保你的虛擬環境中的依賴與專案需要的依賴一致

 6、啟用虛擬環境,並檢視安裝的所有包

pipenv shell
pip list

pipenv shell 會啟用虛擬環境,使您進入到虛擬環境的 shell 中。在這個 shell 中,您可以直接執行 pip list 來檢視所有已安裝的包,就像在普通的系統環境中一樣。

7、在PyCharm 中將這個虛擬環境設定為你的專案直譯器

開啟 PyCharm,轉到 File > Settings(或者 PyCharm > Preferences 在 macOS 上)。
在 Project: <你的專案名> > Python Interpreter 中。
點選齒輪圖示,選擇 Add。
在彈出的視窗中,選擇 Pipenv Environment。
PyCharm 將自動檢測到 Pipfile 並提供建立虛擬環境的選項。由於你已經透過命令列建立了虛擬環境,PyCharm 也應該能夠識別它。
選擇合適的虛擬環境後,點選 OK。
這樣,你就可以在 PyCharm 中使用 pipenv 建立的虛擬環境,並享受 PyCharm 提供的所有功能,比如程式碼完成、除錯等。同時,你也保留了 pipenv 提供的依賴管理和環境一致性的好處。

相關文章