為什麼Python開發者都應該嘗試使用Pipenv?
Pipenv是Kenneth Reitz在一年多前創建的「面向程序員的Python開發工作流程」,現在已成為管理軟體包依賴關係的Python官方推薦資源。
Python軟體包安裝管理的簡要歷史
為了正確理解Pipenv解決的問題,有必要了解Python軟體包管理的發展歷史。
起初,我們有Python,但沒有乾淨的方式來安裝軟體包。
然後,Easy Install出現了,它是一個可以相對容易安裝Python軟體包的工具。但它帶來了一個問題:卸載不需要的軟體包並不容易。
後來,大多數Python用戶熟悉使用pip命令安裝和卸載軟體包。用戶可以指定版本,運行pip freeze> requirements.txt將已安裝軟體包的列表輸出到文本文件,並使用相同的文本文件pip install -r requirements.txt命令安裝所需的應用程序。
但是,pip並不能將軟體包彼此隔離。用戶可能會使用不同版本的相同庫的應用程序,因此我們需要一種方法來啟用它。隨著虛擬環境的發展,我們為每個應用程序創建了小型,孤立的環境。我們已經看到許多用於管理虛擬環境的工具:virtualenv,venv,virtualenvwrapper,pyenv,pyenv-virtualenv,pyenv-virtualenvwrapper等等。它們都可以在pip和requirements.txt文件中很好地發揮作用。
Pipenv能幹什麼?
Pipenv旨在解決幾個問題。
首先,需要用於軟體包安裝的庫、用於創建虛擬環境的庫、用於管理虛擬環境的庫以及與這些庫相關的所有命令。Pipenv提供包管理和虛擬環境支持,用戶可以使用一種工具來安裝,卸載,跟蹤和記錄依賴關係以及創建,使用和組織虛擬環境。當你用它開始一個項目時,如果你還沒有使用Pipenv,Pipenv會自動為該項目創建一個虛擬環境。
Pipenv通過放棄therequirements.txt規範轉而使用稱為Pipfile的新文檔來完成此依賴性管理。當使用Pipenv安裝庫時,項目的Pipfile會自動更新,包括版本信息以及可能的Git存儲庫位置,文件路徑和其他信息。
其次,Pipenv可以更容易管理複雜的相互依賴關係。假設,你的應用程序可能依賴於特定版本的庫,並且該庫可能依賴於另一個特定版本的庫。當應用使用的兩個庫具有相互衝突的依賴關係時,你的生活會變得艱難。Pipenv通過名為Pipfile.lock的文件中跟蹤應用程序相互依賴關係的樹來減輕這種痛苦。Pipfile.lock還會驗證生產中是否使用了正確版本的依賴關係。
另外,Pipenv在多個開發人員協同開發項目時非常方便。由於Pipenv會在安裝軟體包時自動記錄依賴關係,所有人都能夠按照預期正確安裝依賴關係,開發人員可以節省時間並更快地開發產品。
此外,Pipenv具有更好的安全特性,以易於理解的格式繪製依賴關係圖,無縫處理.env文件,並且可以在一個文件中自動處理開發與生產環境的不同依賴關係。
使用Pipenv的基礎知識詳見官方Python教程的管理應用程序依賴關係部分。總之,一年時間,Pipenv就成長為Python官方推薦的頂級資源一定有其優勢所在,所有Python程序員不妨在評論區留下自己對Pipenv的看法。
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
※知既往 見未來 2017浪潮交出了怎樣的成績單
※華麗轉身 Avaya走出破產陰影紐交所成功上市
TAG:IT168企業級 |