前言
之前學(xué)習(xí)異步asyncio
庫的時(shí)候魁莉,因?yàn)?code>asyncio庫支持Python3.5以上的版本,而我的Ubuntu14.04只有Python3.4汁蝶,雖然下載了Python3.6携悯,但是想直接利用ipython3或者pip3調(diào)用Python3.6相關(guān)的東西有點(diǎn)困難获询,可能是我手法不對(duì),有點(diǎn)混亂漠酿。
之前只是簡(jiǎn)單的用過virtualenv
冯凹,直到發(fā)現(xiàn)了這個(gè)pipenv
,有點(diǎn)吊炸天炒嘲。
Python開發(fā)者應(yīng)該聽過pip宇姚、easy_install和virtualenv,如果看過我的書應(yīng)該還知道 virtualenvwrapper夫凸、virtualenv-burrito和autoenv浑劳,再加上pyvenv、venv(Python 3標(biāo)準(zhǔn)庫)夭拌、pyenv…
額魔熏,是不是有種發(fā)懵的感覺衷咽?
那么現(xiàn)在有個(gè)好消息,你可以只使用終極方案: pipenv + autoenv(可選)蒜绽。
pipenv 都包含什么镶骗?
pipenv 是 Pipfile 主要倡導(dǎo)者、requests 作者 Kenneth Reitz 寫的一個(gè)命令行工具躲雅,主要包含了Pipfile鼎姊、pip、click相赁、requests和virtualenv相寇。Pipfile和pipenv本來都是Kenneth Reitz的個(gè)人項(xiàng)目,后來貢獻(xiàn)給了pypa組織钮科。Pipfile是社區(qū)擬定的依賴管理文件唤衫,用于替代過于簡(jiǎn)陋的 requirements.txt 文件。
Pipfile的基本理念是:
Pipfile 文件是 TOML 格式而不是 requirements.txt 這樣的純文本跺嗽。
一個(gè)項(xiàng)目對(duì)應(yīng)一個(gè) Pipfile战授,支持開發(fā)環(huán)境與正式環(huán)境區(qū)分。默認(rèn)提供 default 和 development 區(qū)分桨嫁。
提供版本鎖支持植兰,存為 Pipfile.lock。
click是Flask作者 Armin Ronacher 寫的命令行庫璃吧,現(xiàn)在Flask已經(jīng)集成了它楣导。
接下來,我們看看怎么使用它吧
安裝
$ pip install pipenv
用法
在使用pipenv
之前畜挨,必須徹底的忘記pip
這個(gè)東西
新建一個(gè)準(zhǔn)備當(dāng)環(huán)境的文件夾pipenvtest筒繁,并cd進(jìn)入該文件夾:
pipenv --three
會(huì)使用當(dāng)前系統(tǒng)的Python3創(chuàng)建環(huán)境
pipenv --python 3.6
指定某一Python版本創(chuàng)建環(huán)境
pipenv shell
激活虛擬環(huán)境
pipenv --where
顯示目錄信息
/home/jiahuan/pipenvtest
pipenv --venv
顯示虛擬環(huán)境信息
/home/jiahuan/.local/share/virtualenvs/pipenvtest-9KKRH3OW
pipenv --py
顯示Python解釋器信息
/home/jiahuan/.local/share/virtualenvs/pipenvtest-9KKRH3OW/bin/python
pipenv install requests
安裝相關(guān)模塊并加入到Pipfile
pipenv install django==1.11
安裝固定版本模塊并加入到Pipfile
pipenv graph
查看目前安裝的庫及其依賴
requests==2.18.4
? - certifi [required: >=2017.4.17, installed: 2017.11.5]
? - chardet [required: <3.1.0,>=3.0.2, installed: 3.0.4]
? - idna [required: >=2.5,<2.7, installed: 2.6]
? - urllib3 [required: >=1.21.1,<1.23, installed: 1.22]
pipenv check
檢查安全漏洞
Checking PEP 508 requirements…
Passed!
Checking installed package safety…
All good!
pipenv uninstall --all
卸載全部包并從Pipfile中移除
Found 5 installed package(s), purging…
Uninstalling certifi-2017.11.5:
? Successfully uninstalled certifi-2017.11.5
Uninstalling chardet-3.0.4:
? Successfully uninstalled chardet-3.0.4
Uninstalling idna-2.6:
? Successfully uninstalled idna-2.6
Uninstalling requests-2.18.4:
? Successfully uninstalled requests-2.18.4
Uninstalling urllib3-1.22:
? Successfully uninstalled urllib3-1.22
跟上面graph命令顯示的內(nèi)容對(duì)應(yīng)
出現(xiàn)個(gè)報(bào)錯(cuò)
之后隨意測(cè)試的時(shí)候 使用pipenv --two
想創(chuàng)建一個(gè)基于Python2.7的虛擬環(huán)境時(shí)出了點(diǎn)問題。報(bào)了這樣一個(gè)錯(cuò)誤
TypeError: 'NoneType' object is not subscriptable
而使用pipenv --python 3.6
卻沒有問題(自帶的是Python3.5巴元,Python3.6新安裝的毡咏,這讓我很納悶,明天去公司試一試逮刨。
經(jīng)過測(cè)試:在公司ubuntu機(jī)器上可以使用 ,今晚再回家里試試...
.....
回家仔細(xì)觀察了報(bào)錯(cuò)呕缭,原來是我pip源的配置文件出了點(diǎn)錯(cuò),多了個(gè)空格修己,囧 ~
OK恢总,那就沒問題
==========================================
2018/01/24更新
pipenv install 安裝模塊時(shí)有時(shí)候會(huì)很慢
可以設(shè)置國(guó)內(nèi)源:Pipfile
文件中[source]
下面url
屬性,比如修改成:url = "https://pypi.tuna.tsinghua.edu.cn/simple"
小結(jié)
這里寫了一個(gè)pipenv常用的命令睬愤,很不錯(cuò)的工具片仿,pip與virtualenv的結(jié)合體,值得一用尤辱。