關(guān)系
- pip
管理和安裝python的第三方包。
- pip
- virtualenv
獨立的虛擬環(huán)境,可避免各個python應(yīng)用之間互相影響(如對包的版本依賴不同)。
- virtualenv
- pipenv
高級的包管理器。
對pip和virtualenv的功能做了封裝,不必再單獨使用兩者。除此之外,使用Pipfile和Pipfile.lock兩個文件描述了環(huán)境中的包依賴關(guān)系,比requirements.txt文件更清晰、更有結(jié)構(gòu)。等等。
- pipenv
pip相關(guān)
- 源
默認的源是https://pypi.python.org/simple。然而由于網(wǎng)速過慢,通常會選擇阿里云源(http://mirrors.aliyun.com/pypi/simple/)或豆瓣源(http://pypi.douban.com/simple)。
在文件~/.pip/pip.conf中:
[global] index-url = http://mirrors.aliyun.com/pypi/simple/
[install] trusted-host = mirrors.aliyun.com
- 源
- 多個python版本在同一環(huán)境
以一個環(huán)境中有Python2和Python3兩個版本為例。
正常情況下,在目錄/usr/local/bin/會有pip和pip3兩個文件(或類似名稱文件)。具體位置可使用which命令獲取。
如果兩個文件的內(nèi)容正確,那使用pip和pip3命令即可進行區(qū)分。
怎么區(qū)分是否正確?查看文件的首行。
我本地的pip文件首行是:
#!/usr/bin/python
而pip3的首行是:
#!/usr/local/opt/python3/bin/python3.6
這句話的目的是為了指出,當(dāng)該文件以腳本方式運行時,所使用的python解釋器。
具體的解釋器位置,同樣可使用which命令獲取。
也可通過以下命令來查看:
pip -V
然而,其實可直接使用以下命令指定使用哪個python版本以及對應(yīng)的pip:
sudo python -m pip install xxx
- 多個python版本在同一環(huán)境
pipenv命令
- pipenv install
創(chuàng)建虛擬環(huán)境,安裝包,并加入Pipfile。
- pipenv install
- pipenv shell
使用虛擬環(huán)境,生成一個shell。
- pipenv shell
- pipenv lock
生成Pipfile.lock文件。
- pipenv lock
- pipenv graph
樹形展示當(dāng)前虛擬環(huán)境中,各個已安裝包的依賴關(guān)系。
- pipenv graph
- exit
退出虛擬環(huán)境。
- exit
- pipenv run
使用虛擬環(huán)境,執(zhí)行跟著的命令。
- pipenv run
- pipenv uninstall
install反過來。
- pipenv uninstall
- pipenv sync
安裝Pipfile.lock中表明的所有包。
- pipenv sync
- pipenv clean
卸載所有不在Pipfile.lock中表明的包。
- pipenv clean
一些問題
- 整體不穩(wěn)定
目前(2018.03),基本每天都會發(fā)一個小版本,距離完全穩(wěn)定還有一定距離。
- 整體不穩(wěn)定
- 源的問題
如果不使用默認的官方pip源,那就會經(jīng)常出現(xiàn)各種莫名其妙的問題(涉及pipenv lock命令),在倉庫的issues里也經(jīng)??吹较嚓P(guān)問題,由于其版本更新過快,我也不太好確認是已經(jīng)改好了,還是沒改好,或者就是我本地環(huán)境的問題(暫未深究)。我暫時提了一個issue:using different source achieve different result when execute pipenv lock。
- 源的問題
3月14日補充
上面那個問題我最后發(fā)現(xiàn)是pip源沒配置好,當(dāng)使用的源的url為 http://mirrors.aliyun.com/pypi/simple/ 時,需要設(shè)置 verify_ssl=false 。
隨后我發(fā)現(xiàn),不管是豆瓣源還是阿里云源現(xiàn)在都可通過https訪問,也就是說在pip.conf文件中把url從http換成https后,可以不加trusted-host了~
目前來看,lock功能運行非常得慢?。?!