关系
-
- pip
管理和安装python的第三方包。
- pip
-
- virtualenv
独立的虚拟环境,可避免各个python应用之间互相影响(如对包的版本依赖不同)。
- virtualenv
-
- pipenv
高级的包管理器。
对pip和virtualenv的功能做了封装,不必再单独使用两者。除此之外,使用Pipfile和Pipfile.lock两个文件描述了环境中的包依赖关系,比requirements.txt文件更清晰、更有结构。等等。
- pipenv
pip相关
-
- 源
默认的源是https://pypi.python.org/simple。然而由于网速过慢,通常会选择阿里云源(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版本在同一环境
以一个环境中有Python2和Python3两个版本为例。
正常情况下,在目录/usr/local/bin/会有pip和pip3两个文件(或类似名称文件)。具体位置可使用which命令获取。
如果两个文件的内容正确,那使用pip和pip3命令即可进行区分。
怎么区分是否正确?查看文件的首行。
我本地的pip文件首行是:#!/usr/bin/python
而pip3的首行是:#!/usr/local/opt/python3/bin/python3.6
这句话的目的是为了指出,当该文件以脚本方式运行时,所使用的python解释器。
具体的解释器位置,同样可使用which命令获取。
也可通过以下命令来查看:pip -V
然而,其实可直接使用以下命令指定使用哪个python版本以及对应的pip:sudo python -m pip install xxx
- 多个python版本在同一环境
pipenv命令
-
- pipenv install
创建虚拟环境,安装包,并加入Pipfile。
- pipenv install
-
- pipenv shell
使用虚拟环境,生成一个shell。
- pipenv shell
-
- pipenv lock
生成Pipfile.lock文件。
- pipenv lock
-
- pipenv graph
树形展示当前虚拟环境中,各个已安装包的依赖关系。
- pipenv graph
-
- exit
退出虚拟环境。
- exit
-
- pipenv run
使用虚拟环境,执行跟着的命令。
- pipenv run
-
- pipenv uninstall
install反过来。
- pipenv uninstall
-
- pipenv sync
安装Pipfile.lock中表明的所有包。
- pipenv sync
-
- pipenv clean
卸载所有不在Pipfile.lock中表明的包。
- pipenv clean
一些问题
-
- 整体不稳定
目前(2018.03),基本每天都会发一个小版本,距离完全稳定还有一定距离。
- 整体不稳定
-
- 源的问题
如果不使用默认的官方pip源,那就会经常出现各种莫名其妙的问题(涉及pipenv lock命令),在仓库的issues里也经常看到相关问题,由于其版本更新过快,我也不太好确认是已经改好了,还是没改好,或者就是我本地环境的问题(暂未深究)。我暂时提了一个issue:using different source achieve different result when execute pipenv lock。
- 源的问题
3月14日补充
上面那个问题我最后发现是pip源没配置好,当使用的源的url为 http://mirrors.aliyun.com/pypi/simple/
时,需要设置 verify_ssl=false
。
随后我发现,不管是豆瓣源还是阿里云源现在都可通过https访问,也就是说在pip.conf文件中把url从http换成https后,可以不加trusted-host了~
目前来看,lock功能运行非常得慢!!!