簡介 進群:125240963 即可獲取數十套PDF哦! Pipenv,它的項目簡介為 Python Development Workflow for Humans,是 Python 著名的 requests 庫作者 kennethreitz 寫的一個包管理工具,它可以為我們的項目自動創建和管理虛擬 ...
簡介
進群:125240963 即可獲取數十套PDF哦!
Pipenv,它的項目簡介為 Python Development Workflow for Humans,是 Python 著名的 requests 庫作者 kennethreitz 寫的一個包管理工具,它可以為我們的項目自動創建和管理虛擬環境並非常方便地管理 Python 包,現在它也已經是 Python 官方推薦的包管理工具。
安裝
本文內容基於 Python 3.6 說明,預設的 Python 解釋器命令為 python3,包管理工具命令為 pip3。
Pipenv 是基於 Python 開發的包,所以可以直接用 pip 來安裝,命令如下:
1
pip3 install pipenv
另外還有多種安裝方式,如 Pipsi、Nix、Homebrew,安裝方式可以參考:http://pipenv.readthedocs.io/en/latest/#install-pipenv-today。
接下來我們首先驗證一下當前的項目是沒有創建虛擬環境的,調用如下命令:
執行完畢之後,樣例輸出如下:
實際上這也和 virtualenv 激活的流程一樣,也是調用了類似 source venv/bin/activate 方法將這個路徑加到全局環境變數最前面,這樣就會優先調用該路徑下的 python、python3、python3.6 可執行文件了。
這時候我們會發現命令行的樣子就變了,前面多了一個 (PipenvTest-VSTVh89E) 的標識,代表當前我們已經切換到了虛擬環境下。
這時我們用 which 或 where 命令查看一下 Python 可執行文件的路徑,命令如下:
如果有這樣的輸出結果就代表成功安裝了 Django,可以看到此時安裝的 Django 版本為 2.0,代表我們的虛擬環境成功安裝了 Django 2.0 版本。
同時我們還註意到它輸出了一句話叫做 Updated Pipfile.lock,這時我們可以發現項目路徑下又生成了一個 Pipfile.lock 文件,內容如下:
可以看到裡面標識了 Python 環境基本信息,以及依賴包的版本及 hashes 值。
另外我們還可以註意到 Pipfile 文件內容也有更新,[packages] 部分多了一句 django = “*”,標識了本項目依賴於 Django,這個其實類似於 requirements.txt 文件。
那麼到這裡有小伙伴可能就會問了, Pipfile 和 Pipfile.lock 有什麼用呢?
好,接下來我們再回歸正題,現在已經安裝好了 Django 了,那麼我們重新運行此腳本便可以成功輸出 Django 版本信息了:
1
(PipenvTest-VSTVh89E) CQC-MAC% python3 main.py
結果如下:
1
2.0.2
這樣我們就成功安裝了 Django 2.x 了,和系統的 Django 1.11 沒有任何衝突。
在此模式的命令行下,我們就可以使用虛擬環境下的 Python 解釋器,而且所安裝的依賴包對外部系統沒有任何影響,而且使用 Pipfile 和 Pipfile.lock 來管理項目的依賴更加方便和健壯。
樣例輸出如下:
1
/Users/CQC/.local/share/virtualenvs/PipenvTest-VSTVh89E/bin/python
載入系統 Python 包
預設情況下,新創建的虛擬環境是不包含任何第三方包的,但我們也可以開啟載入系統 Python 包功能,使用 –site-packages 即可:
1
pipenv --site-packages
這樣創建的虛擬環境便可以使用系統已安裝的 Python 包了。
開啟虛擬環境
要開啟虛擬環境只需要執行如下命令:
1
pipenv shell
這樣就可以進入虛擬環境,此時運行的 python、python3 命令都是虛擬環境下的。
安裝 Python 包
安裝 Python 包我們不再需要 pip 來安裝,直接使用 Pipenv 也可安裝,如安裝 requests,命令如下:
1
pipenv install requests
安裝完成之後會同時更新項目目錄下的 Pipfile 和 Pipfile.lock 文件。
有時候一些 Python 包是僅僅開發環境需要的,如 pytest,這時候我們通過添加 –dev 參數即可,命令如下:
pipenv install pytest --dev
這時候,pytest 的依賴便會記錄在 Pipfile 的 [dev-packages] 區域:
[dev-packages]
pytest = "*"
獲取包依賴
我們可以使用命令來清晰地呈現出當前安裝的 Python 包版本及之間的依賴關係,命令如下:
pipenv graph
樣例結果如下:
Django==2.0.2
- pytz [required: Any, installed: 2018.3]
pytest==3.4.1
- attrs [required: >=17.2.0, installed: 17.4.0]
- pluggy [required: <0.7,>=0.5, installed: 0.6.0]
- py [required: >=1.5.0, installed: 1.5.2]
- setuptools [required: Any, installed: 38.5.1]
- six [required: >=1.10.0, installed: 1.11.0]
requests==2.18.4
- certifi [required: >=2017.4.17, installed: 2018.1.18]
- chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
- idna [required: <2.7,>=2.5, installed: 2.6]
- urllib3 [required: <1.23,>=1.21.1, installed: 1.22]
可以看到結果非常清晰,Django 當前安裝了 2.0.2版本,依賴於 pytz 任何版本,已經安裝了 2018.3 版本;pytest 已經安裝了 3.4.1 版本,依賴 attrs>=17.2.0 版本,已經安裝了 17.4.0 版本,另外還依賴 pluggy、py、setuptools、six 這些庫。總之包的依賴關係一目瞭然。
卸載 Python 包
卸載 Python 包也非常簡單,如卸載 requests 包,命令如下:
pipenv uninstall requests
卸載完成之後,Pipfile 和 Pipfile.lock 文件同樣會更新。
如果要卸載全部 Python 包,可以添加 –all 參數:
pipenv uninstall --all
產生 Pipfile.lock
有時候可能 Pipfile.lock 文件不存在或被刪除了,這時候我們可以使用如下命令生成:
pipenv lock
以上便是一些常用的 Pipenv 命令,如果要查看更多用法可以參考其官方文檔:https://docs.pipenv.org/#pipenv-usage。
結語
本文介紹了 Pipenv 的基本用法,作為 pip 和 virtualenv 的結合體,我們可以利用它更方便地創建和管理 Python 虛擬環境,還可以用更加科學的方式管理 Python 包,一舉兩得。
嗯,是時候拋棄 virtualenv 和 pip 了!
轉載請註明:靜覓 » Requests庫作者另一神器Pipenv的用法