Python虛擬環境管理神器——Pipenv

Python虛擬環境管理神器——Pipenv

Pipenv,它的項目簡介為 Python Development Workflow for Humans,是 Python 著名的 requests 庫作者 kennethreitz 寫的一個包管理工具,它可以為我們的項目自動創建和管理虛擬環境並非常方便地管理 Python 包,現在它也已經是 Python 官方推薦的包管理工具。

溯源

起初,Python沒有便利的方式來安裝軟件包。

後來,Easy Install 安裝方便,但卸載不需要的軟件包並不容易。

接著,pip逐漸被人們熟練的使用,其具有方便的安裝和卸載等諸多優點,但當用戶使用不同版本的相同庫的時候。不能將軟件包彼此隔離。

隨著虛擬環境的發展,出現了很多管理虛擬環境的工具:virtualenv,venv,pyenv,pyenv-virtualenv等。它們都可以在pip和requirements.txt文件中很好地發揮作用。

以前我們需要將虛擬環境依賴包的導出為 requirements.txt , 一旦依賴包變動,就要重新導出,而pipenv會自動幫我們生成 Pipfile 和 Pipfile.lock ,Pipfile會隨著項目,當我們安裝時只需在 Pipfile 和 Pipfile.lock 所在的目錄下運行 pipenv install即可。

Pipenv優點。

pipenv由requests庫作者Kenneth Reitz開發,結合了pip及virtualenv的功能和優點,其目的是替代virtualenv和pyenv。

  • 解決了requirements.txt依賴管理侷限的不確定構建問題,提供的pipenv替代pip並自帶一個依賴清單Pipfile和依賴鎖定Pipfile.lock。
  • 有效的的解決了多個項目依賴不同版本的子模塊的問題,自動關聯項目相關的virtualenv,能夠快速的加載virtualenv。
  • 解決了依賴分析問題,使用pipenv graph命令可以看到依賴樹
  • 廣泛使用 Hash 校驗,保證安全性。
  • 可通過自動加載 .env 讀取環境變量,簡化開發流程。

使用

PyCharm 從 2018.2 版本開始已經支持 pipenv 。

安裝

pip install pipenv

創建環境

一行命令搞定 virtualenv 和 pipfile 的初始化(不初始化則將使用默認版本的Python),它會在你的用戶目錄下對你的 virtualenv 進行統一管理。如果當前目錄下有 requirements.txt 文件,它會非常貼心地幫你自動轉換。(注意:切換至新建的python項目目錄)。

cd/>

初始化一個 python3 的環境

pipenv --three

初始化一個 python2 的環境

pipenv --two

初始化特定版本的環境

pipenv --python 3.6

進入 / 退出環境

進入環境

pipenv shell

退出環境

exit

刪除虛擬環境

pipenv --rm

安裝 / 更新 / 卸載依賴

pipenv install 創建了項目的虛擬環境,

Python虛擬環境管理神器——Pipenv

Pipfile

Pipfile文件,source部分用來設置倉庫地址,packages部分用來指定項目依賴的包,dev-packages部分用來指定開發環境需要的包,這樣分開便於管理。

Python虛擬環境管理神器——Pipenv

Pipfile.lock

而Pipfile.lock中記錄了當前環境中安裝的依賴的版本號以及哈希,以保證每次裝出來的依賴都是一致的,注意,任何情況下都不要手動修改 Pipfile.lock 文件!

pipenv install的時候有三種邏輯:

  • 如果目錄下沒有Pipfile和Pipfile.lock文件,表示創建一個新的虛擬環境;
  • 如果有,表示使用已有的Pipfile和Pipfile.lock文件中的配置創建一個虛擬環境;
  • 如果後面帶諸如django這一類庫名,表示為當前虛擬環境安裝第三方庫。

安裝項目已有的所有依賴,加--dev表示包括 Pipfile 的 dev-packages 中的依賴(通常有一些Python包只在你的開發環境中需要,而不是在你的生產環境中,例如單元測試包。 Pipenv將使用–dev標誌保持兩個環境分開。)。

pipenv install --dev

安裝某個庫。

pipenv install requests

安裝指定版本的庫,安裝時加--dev表示加入到 dev 環境。

pipenv install parsel==1.3.1

從項目中更新某個庫

pipenv update requests

更新所有的庫

pipenv update

從項目環境中刪除某個庫

pipenv uninstall requests

另外,Pipefile 和 Pipefile.lock 都會按照你的操作進行自動的更新,如果需要手動修改包的依賴條件,手工編輯 Pipefile 並進行安裝即可。

打印環境中已安裝的包

pipenv graph

能夠更清晰地展示現有依賴包。

鎖定版本

更新 lock 文件鎖定當前環境的依賴版本

pipenv lock

環境變量管理

如果你開發調試時需要配一堆環境變量,可以寫到.env文件中,在pipenv shell進入虛擬環境時,它會幫你把這些環境變量加載好,非常方便。

例如寫一個.env文件

echo "test=toutiao" > .env

之後pipenv shell進入虛擬環境,echo $test就能看環境變量的值toutiao已經設置好了。

運行python命令

pipenv run python/>

這將使用當前虛擬環境關聯的Python解釋器,執行命令。

Options

Usage: pipenv [OPTIONS] COMMAND [ARGS]...

Options:

--update 升級 pipenv, pip 到最新.

--where 輸出項目的目錄信息.

--venv 輸出 virtualenv 的目錄信息.

--py 輸出 Python 解析器的路徑.

--envs 輸出環境變量的設置.

--rm 刪除當前 virtualenv.

--bare Minimal output.

--completion Output completion (to be evald).

--man 顯示使用手冊.

--three / --two 使用 Python 3/2 來創建 virtualenv

--python TEXT 直接指定 Python 解析器.

--site-packages 拷貝系統 site-packages 到 virtualenv.

--jumbotron An easter egg, effectively.

--version 顯示版本信息並退出.

-h, --help 顯示當前信息並退出.

Commands:

check 檢查安全漏洞和反對 PEP 508 標記在Pipfile提供.

graph 顯示當前依賴關係圖信息.

install 安裝提供的包,並加入 Pipfile 的依賴清單中

lock 生成 Pipfile.lock.

open 在編輯器(vim)查看一個特定模塊.

run 在 virtualenv 中執行命令.

shell 切換到 virtualenv 中.

uninstall 刪除提供的包,並清理 Pipfile 的依賴清單中.

update 卸載當前所以依賴,然後安裝最新包


分享到:


相關文章: