摘要:的把最新型最先進的虛擬環(huán)境吵得火熱。進入后,你會發(fā)現(xiàn)用也是能生效的。但是注意進入環(huán)境后千萬不要用退出,而應(yīng)該用退出。最佳解決方案是因為這種在其他地方也常見,一般都是沒有在環(huán)境里安裝的問題。
2018的PyCon把最新型最先進的Python虛擬環(huán)境pipenv吵得火熱。看了下介紹感覺真的很好用,它在virtualenv的基礎(chǔ)上包裝了一些更便捷的功能,解決了很多很多virtualenv欠缺的事情。
參考pipenv的前世今生:PyCon 2018 之 Python 未來的依賴管理工具 pipenv
參考:pipenv 更優(yōu)雅的管理你的python開發(fā)環(huán)境
直接參考創(chuàng)造者Kenneth的官方說明
簡單說,pipenv就是把pip和virtualenv包裝起來的一個便攜工具。
它不會在你的項目文件夾里生成一大堆東西,只有兩個文本文件:
Pipfile, 簡明地顯示項目環(huán)境和依賴包。
Pipfile.lock, 詳細記錄環(huán)境依賴,并且利用了hash算法保證了它完整對應(yīng)關(guān)系。只在你使用pipenv lock命令后才出現(xiàn)。
安裝Mac安裝很簡單,只要用Homebrew:
$ brew install pipenv
Linux的話,是用pip安裝:
$ pip install --user pipenv
安裝好后,終端里還調(diào)取不了命令,因為它現(xiàn)在只是個包。
需要先找到它的真是路徑,然后為了方便把它加到bash或zsh等shell里面:
# 先獲取python包的位置 $ python -m site --user-base
比如我的顯示在/home/pi/.local,那么pipenv就藏在/home/pi/.local/bin里。
所以需要打開shell的設(shè)置文件,比如bash的話就編輯~/.bash_profile, zsh的話就編輯~/.zshrc,在里面把剛才查到的包路徑存進去:
alias pipenv="home/pi/.local/bin/pipenv"
注意:我沒有像其他人一樣整個export進去,因為不知道為什么樹莓派里面的zsh使用不來這個。
創(chuàng)建虛擬環(huán)境在某個文件夾創(chuàng)建一個Python3環(huán)境:
# 泛指python的版本 $ pipenv --three # 或者,特指某個python版本 $ pipenv --python 3.5 # 或者,特指某個位置的python $ pipenv --python
然后就會顯示如下動態(tài),可以看出來,pipenv調(diào)用了virtualenv,從本機把Python3環(huán)境拷貝一份到某個本機位置,然后在你的項目文件夾里只創(chuàng)建了兩個文件Pipfile和Pipfile.lock,記錄了所有你這個項目需要的環(huán)境配置,內(nèi)容極其簡單易懂:
顯示當(dāng)前虛擬環(huán)境的儲存位置$ pipenv --venv運行環(huán)境
運行虛擬環(huán)境(無需進入特定shell即可按照該環(huán)境運行腳本):
$ pipenv run python xxx.py進入環(huán)境
進入虛擬環(huán)境:
# 進入虛擬環(huán)境 $ pipenv shell # 退出虛擬環(huán)境 $ exit
其實進入pipenv虛擬環(huán)境,本質(zhì)上就是virtualenv的source ./bin/activate動作,只是使用不一樣。進入后,你會發(fā)現(xiàn)用deactivate也是能生效的。但是:
注意:進入pipenv環(huán)境后千萬不要用deactivate退出,而應(yīng)該用exit退出。否則你再進去這個環(huán)境就會產(chǎn)生錯誤:
Shell for UNKNOWN_VIRTUAL_ENVIRONMENT already activated. No action taken to avoid nested environments.安裝packages包
$ pipenv install <包名>
你需要知道的是,進入pipenv虛擬環(huán)境后,你還是可以用pip install來安裝包的,也能正常使用,因為virtualenv就是這樣做的。
但是,這樣你就不算使用了pipenv策略了,如果你要在項目文件夾里的Pipfile記錄所有項目需要的依賴環(huán)境,就應(yīng)該放棄使用pip install而使用pipenv install,這樣你的Pipfile就會精確記錄所有需要的依賴。
重新安裝所有packages:
有時候需要沖github上clone項目,下載好后,只需要一句話就可以完成創(chuàng)建環(huán)境:
# 根據(jù)Pipfile中的描述安裝所有依賴 $ pipenv install # 或者,根據(jù)Pipfile.lock中的描述安裝所有依賴 $ pipenv install --ignore-pipfile # 或者,只安裝dev組的依賴 $ pipenv install --dev # 或者,根據(jù)曾經(jīng)在pip上導(dǎo)出requirements.txt安裝依賴 $ pipenv install -r按照樹形結(jié)構(gòu)顯示當(dāng)前環(huán)境的依賴關(guān)系:
$ pipenv graph
然后就會顯示出如下效果:
# 刪除某個包 pipenv uninstall <包名> # 刪除整個環(huán)境 $ pipenv --rmpipenv lock時遇到的SSL Error
錯誤反饋如下:
Pipfile.lock not found, creating… Locking [dev-packages] dependencies… Locking [packages] dependencies… usr/local/Cellar/pipenv/2018.5.18/libexec/lib/python3.6/site-packages/pipenv/vendor/requests/sessions.py", line 508, in request resp = self.send(prep, **send_kwargs) File "/usr/local/Cellar/pipenv/2018.5.18/libexec/lib/python3.6/site-packages/pipenv/vendor/requests/sessions.py", line 618, in send r = adapter.send(request, **kwargs) File "/usr/local/Cellar/pipenv/2018.5.18/libexec/lib/python3.6/site-packages/pipenv/vendor/requests/adapters.py", line 506, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host="pypi.org", port=443): Max retries exceeded with url: /pypi/pyobjc-framework-netfs/json (Caused by SSLError(SSLError(1, u"[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)"),))
參考pipenv的issue解答。
最佳解決方案是:
$ pip install pyopenssl
因為這種SSL Error在其他地方也常見,一般都是沒有在環(huán)境里安裝pyopenssl的問題。所以不管你在哪個環(huán)境,如果出現(xiàn)這個SSL問題,就先裝pyopenssl解決。
注意:不要用pipenv install pyopenssl,因為你真的不想在每個環(huán)境里都重新裝一遍這個,干脆把它撞到本機:$ pip install pyopenssl.
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41814.html
摘要:安全,廣泛地使用校驗,能夠自動曝露安全漏洞。部分用來設(shè)置倉庫地址,部分用來指定項目依賴的包,部分用來指定開發(fā)環(huán)境需要的包,這樣分開便于管理。參考鏈接新款虛擬環(huán)境工具詳解筆記使用指南官方推薦的包管理工具 pipenv 是什么 pipenv 是 python 官方推薦的包管理工具,集成了 virtualenv、pyenv 和 pip 三者的功能于一身,類似于 php 中的 composer...
摘要:根據(jù)中華人民共和國信息產(chǎn)業(yè)部第十二次部務(wù)會議審議通過的非經(jīng)營性互聯(lián)網(wǎng)信息服務(wù)備案管理辦法精神,在中華人民共和國境內(nèi)提供非經(jīng)營性互聯(lián)網(wǎng)信息服務(wù),應(yīng)當(dāng)辦理備案。未經(jīng)備案,不得在中華人民共和國境內(nèi)從事非經(jīng)營性互聯(lián)網(wǎng)信息服務(wù)。 當(dāng)我們開發(fā)了一個簡單的 Flask 程序,想把項目部署上線,我們可以選擇傳統(tǒng)的部署方式或者云部署方式把項目部署上線。在本文中,筆者將使用 阿里云輕量應(yīng)用服務(wù)器 安裝 C...
摘要:測試驅(qū)動開發(fā)簡稱,是一種軟件開發(fā)過程中的應(yīng)用方法,,由極限編程中倡導(dǎo),以其倡導(dǎo)先寫測試程序,然后編碼實現(xiàn)其功能得名。測試驅(qū)動著整個開發(fā)過程首先,驅(qū)動代碼的設(shè)計和功能的實現(xiàn)其后,驅(qū)動代碼的再設(shè)計和重構(gòu)。 showImg(https://segmentfault.com/img/remote/1460000017081716); 前言 一直都有聽到 TDD 測試驅(qū)動開發(fā)的開發(fā)方式,之前看...
摘要:提示如果你對的用法以及虛擬環(huán)境的概念不熟悉的話,可以通過專欄的舊文出發(fā)之旅進行簡單的認(rèn)識。為什么使用會自動幫你管理虛擬環(huán)境和依賴文件,并且提供了一系列命令和選項來幫助你實現(xiàn)各種依賴和環(huán)境管理相關(guān)的操作。 什么是Pipenv Pipenv是Kenneth Reitz在2017年1月發(fā)布的Python依賴管理工具,現(xiàn)在由PyPA維護。你可以把它看做是pip和virtualenv的組合體,而...
閱讀 2815·2021-11-16 11:45
閱讀 1689·2021-09-26 10:19
閱讀 2082·2021-09-13 10:28
閱讀 2847·2021-09-08 10:46
閱讀 1690·2021-09-07 10:13
閱讀 1563·2019-08-30 13:50
閱讀 1438·2019-08-30 11:17
閱讀 1482·2019-08-29 13:18