Python包管理工具之Pipenv
?前言
傳統(tǒng)的成熟方案中,我們?yōu)榱吮苊獍姹镜墓芾砘靵y,通常我們是依賴于當前的Python版本創(chuàng)建一個虛擬環(huán)境,并在虛擬環(huán)境中使用pip進行包管理。現(xiàn)在有一個好用的工具叫pipenv來幫助我們更方便的管理包。
一、pipenv是什么以及它有什么作用?
pipenv是一個Python的包管理工具。它是requests作者Kenneth Reitz的作品,提供Python的各個版本間的管理,各種包管理。當你開始熟悉并且使用它的時候,你就知道它有點類似于前端的npm和yarn的味道。
它能自動為項目創(chuàng)建和管理虛擬環(huán)境。當你使用pipenv的時候,他會在項目根目錄下創(chuàng)建Pipfile,用于記錄包的版本信息。當你使用pipenv來安裝包的時候,它會在項目根目錄生成Pipfile.lock文件來鎖定安裝包的版本和依賴信息,避免構(gòu)建錯誤。
它主要解決了以下幾個問題:
- 不需要基于當前的Python解釋器版本單獨的創(chuàng)建使用virtualenv和pip工具。
- 無序維護requirements.txt文件,使用Pipfile和Pipfile.lock來代替。
基本概念:
- 在一個新的項目根目錄下執(zhí)行 pipenv install,則他會自動創(chuàng)建一個虛擬環(huán)境,并且生成一個Pipfile文件。
- 當 install 命令沒有傳遞參數(shù)指定安裝包,如果當前存在Pipfile,則會自動安裝所有Pipfile中的[packages]中的包。
二、安裝pipenv
# MacOS下
pip install pipenv
# shell命令補全
echo 'eval "$(pipenv --completion)"' >> ~/.zshrc
# Centos7下步驟一樣,只需要將~/.zshrc改成 /etc/profile或者其他環(huán)境變量文件即可
三、pipenv優(yōu)缺點
優(yōu)點:
- 自動關(guān)聯(lián)項目相關(guān)的 virtualenv,能夠快速的加載 virtualenv 。
- 提供的pipenv替代pip并自帶一個依賴清單Pipfile,和依賴鎖定Pipfile.lock。
- Pipfile除了依賴清單還支持固定pypi源地址,固定python版本。
- Pipfile還支持dev依賴清單.pipenv install的包會強制使用Pipfile中的源.
- 使用pipenv graph命令可以看到依賴樹。
- 可以直接切換python2和python3。
缺點:
- Windows下命令行終端開頭沒有沒有venv的名稱,讓你不知道是否在虛擬環(huán)境中,容易誤操作。
- 永久設(shè)置了Pipfile文件中的源以后,Pipfile文件中看到的還是官方源,但是實際上是已經(jīng)走了你設(shè)置的源了。
四、使用pipenv
創(chuàng)建pipenv虛擬環(huán)境
# 創(chuàng)建項目目錄
mkdir project1
cd project1
# 可以指定Python版本來創(chuàng)建虛擬環(huán)境
pipenv --python 3.10.4
# 由于項目是新建的,所以會自動生成Pipfile和Pipfile.lock文件
pipenv install
# 不進入虛擬環(huán)境執(zhí)行命令,默認只有以下這幾個包,和用virtualenv中時一樣的
$ pipenv run pip list
Package Version
---------- -------
pip 21.3.1
setuptools 59.6.0
wheel 0.37.1
# 激活虛擬環(huán)境
pipenv shell
# 安裝包
pipenv install requests
# 查看包的依賴關(guān)系
pipenv graph
# 升級某一個包
pipenv update requests
# 退出虛擬環(huán)境
exit
# 刪除虛擬環(huán)境。刪除虛擬環(huán)境不會刪除項目目錄,只是刪除虛擬環(huán)境的目錄
pipenv --rm
五、團隊共享
如果現(xiàn)在在團隊中共享你的項目,比如人員A需要你的項目,他下載項目到本地了,那么運行項目首先安裝依賴包,那依賴包怎么解決呢?
mkdir project2
cd project2
# 然后拷貝Pipfile和Pipfile.lock文件到這個目錄下,執(zhí)行以下命令
pipenv install
這樣就安裝了所有你項目需要的依賴包了。
六、PyCharm中怎么使用Pipenv
首先設(shè)置一下你的環(huán)境變量。
vi ~/.zshrc
# python pipenv
export PATH="$PATH:/Users/allenjol/.local/" >> ~/.zshrc
source ~/.zshrc
打開pycharm,創(chuàng)建一個項目,New environment using選擇Pipenv,創(chuàng)建完成后就進入了Pipenv的環(huán)境了。