pyenv和pipenv的整合使用

pyenv负责管理多版本python的安装,pipenv负责配置项目的包依赖环境。

安装pyenv

首先是安装配置好pyenv,博客里面三篇文章已经说明白了:

关于pyenv的安装和使用,看上面三篇文档即可。

卸载virtualenv

如果安装了virtualenv,可以卸载掉:

$ brew uninstall pyenv-virtualenv
Uninstalling /usr/local/Cellar/pyenv-virtualenv/1.1.3... (20 files, 62.2KB)

因为我们会使用pipenv,不再需要自己创建和管理virtualenv环境。

查看pyenv环境

查看pyenv是否已经工作,以及python是否是pyenv所提供:

$ which python
/Users/weli/.pyenv/shims/python
$ python --version
Python 3.7.2

可以看到我的环境里使用的是pyenv的python。

安装pipenv

然后是使用pyenv环境提供的pip安装pipenv

$ pip install pipenv

使用pipenv

安装完pipenv以后,可以创建一个sample project:

$ mkdir foo

在这里面执行pipenv的安装命令:

$ pipenv install

执行完成后,可以看到当前目录生成了PipfilePipfile.lock

查看生成的Pipfile内容:

里面有一些项目的环境的基础信息。

此时试着安装numpy

安装过程如上所示。实际上pipenv是安装到了它自动为项目创建的virtualenv虚拟环境目录里。

此时重新查看Pipfile

可以看到numpy的依赖已经被添加了。此时我们可以进入到pipenv为我们生成的虚拟环境:

$ pipenv shell

此时在pipenv为我们创建好的环境下就可以进行代码的开发工作了。

查看这个环境所使用的python版本:

可以看到是pipenv的虚拟环境里面的python,然后版本是3.7.2

如果我们要在另一个项目里面使用别的版本的python,pipenv也可以提供支持,下面是命令:

$ pipenv --python 3.6 install

命令的使用例子如下:

可以看到pipenvbar生成了新的虚拟环境。此时查看新项目的Pipfile

可以看到这个项目使用的python版本是3.6。此时进入到这个项目的virtualenv里面:

可以看到这个项目使用的python是我们指定的3.6版本。

值得一提的是,这个3.6版本,是从pyenv里面安装而来:

可以看到,pipenvpyenv是紧密结合的,pipenv会利用pyenv的python多版本支持能力,同时托管了virtualenv的创建工作。

此外,pipenv的virtualenv是给每一个项目单独创建的,并且通过Pipfile来明确定义以来包的各个版本,所以简化了后续项目的distribution工作。

以上是对pipenv的简单使用说明。