一篇學(xué)會 Pipenv 使用
簡介
為了避免污染系統(tǒng)環(huán)境下的 Python,我們在利用 Python 開發(fā)項目時,通常會在項目的根目錄創(chuàng)建 python 虛擬環(huán)境。
閱讀官網(wǎng)文檔,python3.6 + 以上,python 自帶了 venv 命令可以快速構(gòu)建虛擬環(huán)境,你只需在 Google 中搜索【python3.x venv docs】便可以搜索到對應(yīng)版本 Python 下,venv 的使用文檔。
使用 venv 創(chuàng)建虛擬環(huán)境:
- python -m venv venv
這種方式有個問題就是無法創(chuàng)建不同版本的 Python 虛擬環(huán)境,比如我系統(tǒng)中只有 python3.7,就無法創(chuàng)建 python3.8 的虛擬環(huán)境。
這也是我目前遇到的問題,一些比較新的項目,其要求 python3.8+,而我系統(tǒng)只有 python3.7,此時就需要使用 pipenv 了,先安裝一下:
- pip install pipenv
pipenv 基本使用
pipenv 用法比較多,我琢磨了一下,要用好 pipenv,了解起概念和基本用法就好了。
最基本的命令便是創(chuàng)建不同 Python 版本的虛擬環(huán)境。
在項目根目錄下,運行下面 pipenv 命令:
- pipenv --python 3.8.8
pipenv 會掃描系統(tǒng)中相應(yīng)的位置,判斷 python3.8.8 是否已經(jīng)有了,如果沒有,則自動下載 python3.8.8 并為項目創(chuàng)建 python3.8.8 版本的虛擬環(huán)境。
此外,還有一個知識點:
如果項目根目錄中有 Pipfile,怎創(chuàng)建虛擬環(huán)境時,會根據(jù) Pipfile 中的信息生成虛擬環(huán)境,比如安裝相應(yīng)的第三方庫,如果沒有,怎以默認(rèn)的形式去生成虛擬環(huán)境,然后創(chuàng)建 Pipfile,通過 VsCode 打開 Pipfile,其形式如下:
- [[source]]
- url = "https://pypi.org/simple"
- verify_ssl = true
- name = "pypi"
- [packages]
- numpy = "==1.21.5"
- [dev-packages]
- [requires]
- python_version = "3.8"
- source 用來設(shè)置倉庫地址,即從哪下載虛擬環(huán)境所需要的包
- packages 用來指定項目依賴的包,即你安裝了的包
- dev-packages 用來指定開發(fā)環(huán)境需要的包,這類包只用于開發(fā)過程,不用與生產(chǎn)環(huán)境,比如單元測試相關(guān)的包,只在開發(fā)階段有用,這樣分開便于管理。
- requires 中指定目標(biāo) Python 版本
pipenv 會默認(rèn)將虛擬環(huán)境安裝在 ~/.virtualenvs 中,通過 pipenv --venv 可以直接查看當(dāng)前項目虛擬環(huán)境的路徑,如果我們需要使用 PyCharm 編寫項目時,可以根據(jù)這個目錄,直接在 PyCharm 中設(shè)置使用該虛擬環(huán)境:
pipenv 常規(guī)命令如下:
- # 安裝命令
- pipenv install requests #在項目所在虛擬環(huán)境中安裝requests
- pipenv install parsel==1.3.1 #安裝parsel并指定其版本
- pipenv install --dev nose2 #安裝nose2包并將其關(guān)聯(lián)為只在開發(fā)環(huán)境中需要的包
- # 卸載命令
- pipenv uninstall requests #在項目所在虛擬環(huán)境中卸載requests
- pipenv uninstall --all #從虛擬環(huán)境中移除所有已安裝的包,但Pipfile.lock文件不受影響
- pipenv uninstall --all--dev #從虛擬環(huán)境中卸載所有開發(fā)包,并從Pipfile文件中移除這些包
- # 更新命令
- pipenv update requests #在項目中更新requests包
- pipenv update #更新項目中所有的包
- pipenv update --outdated #查看現(xiàn)有包哪些已經(jīng)過期
- #查看命令
- pipenv graph #顯示現(xiàn)有的依賴包
- pipenv lock #更新Pipfile.lock文件鎖定當(dāng)前環(huán)境的依賴版本
pipenv shell
在我現(xiàn)在的工作流中,除了使用 pipenv 創(chuàng)建虛擬環(huán)境后,pipenv 其他命令都不太使用,因為已經(jīng)比較熟悉 pip 命令了,不想再去背 pipenv 的命令。
當(dāng) pipenv 創(chuàng)建完虛擬環(huán)境后,我會通過 pipenv shell,在當(dāng)前 terminal 中激活虛擬環(huán)境,然后直接在其中使用 pip,這樣,從 venv 換成 pipenv 幾乎沒有任何切換成本了,具體的流程為:
- pipenv --python 3.8.8
- pipenv shell
- pip install requests
結(jié)尾
好啦,關(guān)于 pipenv 了解到這個程度就夠用了,至于其他的細節(jié),沒遇到問題就不深入研究了,考慮投入產(chǎn)出比嘛。
參考文章:
Pipenv 使用入門