[翻譯] Pipenv – 官方推薦的 Python 包管理工具


原文地址: 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 ?

Pipenv 解決下列實際問題:github

  • 你再也不須要手動建立虛擬環境,Pipenv 爲你自動建立。簡單地說就是 pipenv 和 virtualenv 一塊兒工做。
  • 管理 requirements.txt 文件會致使一些問題,因此 Pipenv 用 Pipfile 和 Pipfile.lock 替代 requirements.txt,更適合於通常的使用場景。
  • 安全。普遍地使用 Hash 校驗,可以自動曝露安全漏洞。
  • 隨時查看圖形化的依賴關係。
  • 經過加載 .env 文件簡化開發流程。

好了,讓咱們開始學習 pipenv 吧。shell

有不少方式來安裝 pipenv,咱們看看推薦的兩種:安全

使用 pip 安裝

官方推薦的安裝方式是使用 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 安裝

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
複製代碼

使用 pipenv 管理 Python 安裝包

在 shell 中執行 pipenv 命令可查看可用命令和通用選項

$ pipenv
複製代碼

示例輸出以下

https://user-gold-cdn.xitu.io/2017/12/26/1609071aff0c413b?w=1366&h=717&f=png&s=58074

安裝軟件包

新建一個項目目錄或切換到已有項目目錄

$ 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 下使用時遇到些問題:

  1. 須要指定 LOCALE 環境變量 export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8
  2. 須要升級 pip 到最新版本,最好安裝 pipenv 時指定 --upgrade 參數 pip install --user --upgrade pipenv
  3. 安裝某些包時會報錯,產生不了 Pipfile.lock 文件。 github.com/pypa/pipenv…
  4. 這篇教程裏沒說怎麼使用自動建立的虛擬環境,官方文檔裏有:
$ pipenv run python main.py複製代碼
相關文章
相關標籤/搜索