Business

2020年7月21日

pipenv與virtualenv 比較

這裡記錄一下,使用pip/virtualenv和pipenv 不同操作所需的指令比較。




新建虛擬環境

virtualenv pipenv
 $ virtualenv venv 
 $ pipenv install 

virtualenv 註解: 這裡的venv是虛擬環境目錄的名稱,可以自由更改,這會在你的專案根目錄創建一個venv資料夾,其中包含獨立的Python解譯器環境。

pipenv註解: 而pipenv會自動為建立虛擬環境,並且隨機產生一個的虛擬環境的目錄名稱。




啟動虛擬環境

virtualenv pipenv
[Windows]:
 venv\Scripts\activate 
 $ pipenv shell 



安裝package到虛擬環境

virtualenv pipenv
Step1: 
 $ . venv/bin/activate #先啟動虛擬環境
Step2:
 (venv)$ pip install <package-name> 
 $ pipenv install <packageName> 

當你使用pipenv時,不管是否啟動了虛擬環境,都可以透過pipenv install命令安裝套件。如果目前的目錄不包含虛擬環境,pipenv會自動創建一個。




記錄requirements

virtualenv pipenv
 (venv)$ pip freeze > requirements.txt 
 N/A 

virtualenv 註解: 這個指令會把依賴列表寫入requirements.txt文件。每當你安裝或卸載了依賴包時,都需要手動更新這個檔。

pipenv註解: 使用pipenv時,什麼都不必做。它會自動建立pipfile 和pipfile.lock檔(如果不存在),並且在你使用pipenv install/uninstall指令,安裝和卸載套件時,自動更新pipfile 和pipfile.lock檔。pipfile用來記錄專案相關套件清單,而pipfile.lock記錄了固定版本的詳細相關套件列表。




在部署環境安裝依賴

當我們需要在一個新的環境,比如部署上線環境時。virtualenv需要重複上面的指令。

virtualenv pipenv
Step1:
 $ virtualenv venv
Step2:
 $ . venv/bin/activate 
Step3:
 (venv)$ pip install -r requirements.txt
 pipenv install 



區分開發版本的相關依賴

virtualenv pipenv
 -r requirements.txt 
 pytest=1.2.3
$ pipenv install pytest --dev 

virtualenv 註解: 使用requirements.txt時,我們會另外建立一個requirements-dev.txt文件來手動加入開發的依賴。比如專案開發時才會用到pytest,那麼你需要手動創建這個檔,然後寫入。

pipenv註解: 使用pipenv時,你只需要在安裝pytest時添加一個–dev選項,它會自動被分類為開發依賴(寫入pipfile的dev-packages一節中)。




在新的開發環境安裝依賴時,你可以安裝指定檔案中的依賴

virtualenv pipenv
 (venv) $ pip install -r requirements-dev.txt 
$ pipenv install --dev