原文地址: https://www.ostechnix.com/pipenv-officially-recommended-python-packaging-tool/python
上次咱們發佈了一篇[如何用 Pip 進行 Python 包管理](如何用 Pip 進行 Python 包管理 "如何用 Pip 進行 Python 包管理")的文章。在那篇文章裏咱們討論瞭如何安裝 Pip,如何用 Pip 來安裝、升級和刪除 Python 包。咱們也討論了虛擬環境的重要性以及用 venv 和 virtualenv 工具建立虛擬環境的方法。但用 venv 和 virtualenv 管理多個虛擬環境是項乏味並且繁瑣的任務,幸虧咱們有另一個名爲 Pipenv 的工具,它是 Python.org 官網最新推薦的包管理工具,它可以幫助咱們沒必要創建虛擬環境的狀況下很是容易地安裝和管理依賴。Pipenv 能夠爲你的項目自動地建立和管理一個虛擬環境,當你安裝 / 刪除包文件時它能夠添加 / 刪除包名稱到 Pipfile 文件。git
Pipenv 解決下列實際問題:github
好了,讓咱們開始學習 pipenv 吧。shell
有不少方式來安裝 pipenv,咱們看看推薦的兩種:安全
官方推薦的安裝方式是使用 pip。確認你已經裝好了 Python 和 pip,若是沒有,查看文章開頭的那個連接。 若是 pip 已經安裝好了,用下面的命令安裝 pipenvbash
$ pip install --user pipenv
複製代碼
這個命令在用戶級別(非系統全局)下安裝 pipenv。若是安裝後 shell 提示找不到 pipenv 命令,你須要添加當前 Python 用戶主目錄的 bin 目錄到 PATH 環境變量。若是你不知道 Python 用戶主目錄在哪裏,用下面的命令來查看:curl
$ python -m site --user-base
複製代碼
你會看到相似下面的輸出工具
/home/sk/.local
複製代碼
這就是個人 Python 主目錄,那 bin 目錄就是 /home/sk/.local/bin
,清楚了吧?好,運行下面的命令:學習
$ pipenv --update
複製代碼
任什麼時候候你均可以用下面的命令升級 pipenvui
$ pip install --user --upgrade pipenv
$ pipenv --update
複製代碼
Pipsi 是一種幫助你在隔離的虛擬環境裏安裝 Python 腳本的工具。安裝 pipsi,執行
$ curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python
複製代碼
按照安裝提示,你必須修改 PATH 環境變量。 一旦 pipsi 安裝完成,用下面的命令來安裝 pipenv
$ pipsi install pew
$ pipsi install pipenv
複製代碼
最後,用下面的命令來驗證安裝
$ pipenv --update
複製代碼
要升級 pipenv,只需執行
$ pipsi upgrade pipenv
複製代碼
在 shell 中執行 pipenv
命令可查看可用命令和通用選項
$ pipenv
複製代碼
示例輸出以下
新建一個項目目錄或切換到已有項目目錄
$ mkdir myproject
$ cd myproject
複製代碼
爲你的項目安裝依賴包
$ pipenv install requests
複製代碼
用 ls
命令查看當前項目目錄,你會發現有兩個文件:Pipfile 和 Pipfile.lock 。Pipfile 裏有最新安裝的包文件的信息,如名稱、版本等。用來 在從新安裝項目依賴或與他人共享項目時,你能夠用 Pipfile 來跟蹤項目依賴。
$ cat Pipfile
複製代碼
Pipfile.lock 則包含你的系統信息,全部已安裝包的依賴包及其版本信息,以及全部安裝包及其依賴包的 Hash 校驗信息。
$ cat Pipfile.lock
複製代碼
如今安裝另外一個包,再次查看這兩個文件的內容。你會發現 Pipfile 如今包含兩個安裝包了,Pipfile.lock 也包含了全部已安裝包的依賴包及其版本信息,以及全部安裝包及其依賴包的 Hash 校驗信息。每次你安裝新的依賴包,這兩個文件都會自動更新。
你注意到了嗎?我並無建立一個虛擬環境。Pipenv 自動爲這個項目建立了一個虛擬環境,想知道它在哪裏嗎?用下面的命令來查看虛擬環境的位置
$ pipenv --venv
/home/sk/.local/share/virtualenvs/myproject-x7-2XYPN
複製代碼
查看項目根目錄詳情,用
$ pipenv --where
/home/sk/myproject
複製代碼
由上面命令的輸出可知,/home/sk/myproject
是個人項目根目錄,/home/sk/.local/share/virtualenvs/myproject-x7-2XYPN
是項目的虛擬環境目錄。
你能夠用 ls
命令查看虛擬環境目錄下的內容。
ls /home/sk/.local/share/virtualenvs/myproject-x7-2XYPN
複製代碼
$ pipenv update
複製代碼
這個命令會刪除全部軟件包而後從新安裝最新的版本。
你是否擔憂已安裝的軟件包有沒有安全漏洞?不要緊,pipenv 能夠幫你檢查,運行下面的命令
$ pipenv check
Checking PEP 508 requirements…
Passed!
Checking installed package safety…
All good!
複製代碼
上面的命令根據 Pipfile 裏的 PEP 508 標記檢查安全漏洞。
咱們執行 pipenv graph
看看會發生什麼
$ pipenv graph
複製代碼
能夠看到該命令顯示了依賴樹。
用下面的命令刪除軟件包
$ pipenv uninstall requests
Un-installing speedtest-cli…
Uninstalling speedtest-cli-1.0.7:
Successfully uninstalled speedtest-cli-1.0.7
Removing speedtest-cli from Pipfile…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (c23e27)!
複製代碼
刪除所有軟件包
$ pipenv uninstall --all
Un-installing all packages from virtualenv…
Found 1 installed package(s), purging…
Environment now purged and fresh!
複製代碼
查看詳細用法
$ pipenv -h
複製代碼
或
$ pipenv --man
複製代碼
我使用 pipenv 後,確實感受比 pip 更方便。既然它由 Python.org 官方推薦,你安裝 Python 軟件包時能夠棄用 venv 和 virtualenv 了。
今天的教程就到這裏了,更多精彩文章,敬請期待。
資源:
我在 Mac 下使用時遇到些問題:
$ pipenv run python main.py
複製代碼