快速运行python虚拟环境_快速入门Python 最新最流行的pipenv虚拟环境
2018的PyCon把最新型最先進(jìn)的Python虛擬環(huán)境pipenv吵得火熱。看了下介紹感覺真的很好用,它在virtualenv的基礎(chǔ)上包裝了一些更便捷的功能,解決了很多很多virtualenv欠缺的事情。
簡單說,pipenv就是把pip和virtualenv包裝起來的一個(gè)便攜工具。
它不會(huì)在你的項(xiàng)目文件夾里生成一大堆東西,只有兩個(gè)文本文件:
Pipfile, 簡明地顯示項(xiàng)目環(huán)境和依賴包。
Pipfile.lock, 詳細(xì)記錄環(huán)境依賴,并且利用了hash算法保證了它完整對(duì)應(yīng)關(guān)系。只在你使用pipenv lock命令后才出現(xiàn)。
安裝
Mac安裝很簡單,只要用Homebrew:
$ brew install pipenv
Linux的話,是用pip安裝:
$ pip install --user pipenv
安裝好后,終端里還調(diào)取不了命令,因?yàn)樗F(xiàn)在只是個(gè)包。
需要先找到它的真是路徑,然后為了方便把它加到bash或zsh等shell里面:
# 先獲取python包的位置
$ python -m site --user-base
比如我的顯示在/home/pi/.local,那么pipenv就藏在/home/pi/.local/bin里。
所以需要打開shell的設(shè)置文件,比如bash的話就編輯~/.bash_profile, zsh的話就編輯~/.zshrc,在里面把剛才查到的包路徑存進(jìn)去:
alias pipenv="home/pi/.local/bin/pipenv"
注意:我沒有像其他人一樣整個(gè)export進(jìn)去,因?yàn)椴恢罏槭裁礃漭衫锩娴膠sh使用不來這個(gè)。
創(chuàng)建虛擬環(huán)境
在某個(gè)文件夾創(chuàng)建一個(gè)Python3環(huán)境:
# 泛指python的版本
$ pipenv --three
# 或者,特指某個(gè)python版本
$ pipenv --python 3.5
# 或者,特指某個(gè)位置的python
$ pipenv --python
然后就會(huì)顯示如下動(dòng)態(tài),可以看出來,pipenv調(diào)用了virtualenv,從本機(jī)把Python3環(huán)境拷貝一份到某個(gè)本機(jī)位置,然后在你的項(xiàng)目文件夾里只創(chuàng)建了兩個(gè)文件Pipfile和Pipfile.lock,記錄了所有你這個(gè)項(xiàng)目需要的環(huán)境配置,內(nèi)容極其簡單易懂:
顯示當(dāng)前虛擬環(huán)境的儲(chǔ)存位置
$ pipenv --venv
運(yùn)行環(huán)境
運(yùn)行虛擬環(huán)境(無需進(jìn)入特定shell即可按照該環(huán)境運(yùn)行腳本):
$ pipenv run python xxx.py
進(jìn)入環(huán)境
進(jìn)入虛擬環(huán)境:
# 進(jìn)入虛擬環(huán)境
$ pipenv shell
# 退出虛擬環(huán)境
$ exit
其實(shí)進(jìn)入pipenv虛擬環(huán)境,本質(zhì)上就是virtualenv的source ./bin/activate動(dòng)作,只是使用不一樣。進(jìn)入后,你會(huì)發(fā)現(xiàn)用deactivate也是能生效的。但是:
注意:進(jìn)入pipenv環(huán)境后千萬不要用deactivate退出,而應(yīng)該用exit退出。否則你再進(jìn)去這個(gè)環(huán)境就會(huì)產(chǎn)生錯(cuò)誤:
Shell for UNKNOWN_VIRTUAL_ENVIRONMENT already activated.
No action taken to avoid nested environments.
安裝packages包
$ pipenv install
你需要知道的是,進(jìn)入pipenv虛擬環(huán)境后,你還是可以用pip install來安裝包的,也能正常使用,因?yàn)関irtualenv就是這樣做的。
但是,這樣你就不算使用了pipenv策略了,如果你要在項(xiàng)目文件夾里的Pipfile記錄所有項(xiàng)目需要的依賴環(huán)境,就應(yīng)該放棄使用pip install而使用pipenv install,這樣你的Pipfile就會(huì)精確記錄所有需要的依賴。
重新安裝所有packages:
有時(shí)候需要沖github上clone項(xiàng)目,下載好后,只需要一句話就可以完成創(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
然后就會(huì)顯示出如下效果:
刪除虛擬環(huán)境:
# 刪除某個(gè)包
pipenv uninstall
# 刪除整個(gè)環(huán)境
$ pipenv --rm
pipenv lock時(shí)遇到的SSL Error
錯(cuò)誤反饋如下:
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)'),))
最佳解決方案是:
$ pip install pyopenssl
因?yàn)檫@種SSL Error在其他地方也常見,一般都是沒有在環(huán)境里安裝pyopenssl的問題。所以不管你在哪個(gè)環(huán)境,如果出現(xiàn)這個(gè)SSL問題,就先裝pyopenssl解決。
注意:不要用pipenv install pyopenssl,因?yàn)槟阏娴牟幌朐诿總€(gè)環(huán)境里都重新裝一遍這個(gè),干脆把它撞到本機(jī):$ pip install pyopenssl.
常見錯(cuò)誤操作
不要在pipenv shell里面運(yùn)行pipenv install
不要在pipenv shell里面運(yùn)行deactivate
總結(jié)
以上是生活随笔為你收集整理的快速运行python虚拟环境_快速入门Python 最新最流行的pipenv虚拟环境的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java配置jndi连接数_JavaWe
- 下一篇: python 打开pdf文件_Pytho