1、pyenv-virtualenv简介
pyenv-virtualenv是一个管理python虚拟环境的插件。pyenv 解决的是同一个系统中不同版本的 python 并存的问题,而 pyenv-virtualenv 解决的是不同项目所依赖的软件包之间可能产生冲突的问题。在实际使用 python 的过程中,很容易出现这样的问题:
通过
pip
安装软件包 A 时安装了 A 所依赖的软件包 B;之后又通过pip
安装软件包 C 时再次安装了 B 并将之前的覆盖,但是因为 C 和 A 所依赖的 B 版本不同,安装完 C 后导致 A 无法运行。
pyenv-virtualenv 通过为每个项目设置独立的虚拟环境(目录)来解决上述问题。由于 pyenv-virtualenv 是 pyenv 的一个插件,因此需要首先安装 pyenv ,然后通过 git 或者 brew 安装 pyenv-virtualenv。
使用 pyenv-virtualenv 创建虚拟环境,命令格式为
pyenv virtualenv [version] <venv-name>
$ pyenv virtualenv 3.6.1 my-virtual-env-3.6.1
上述命令将创建一个名为my-virtual-env-3.6.1的虚拟环境(目录),并且将 python 3.6.1 对应的bin和lib复制到该环境中。当该虚拟环境被激活后,所有的 python 操作都只在该环境中进行,从而和其它 python 内容隔离。
pyenv-virtualenv 支持自动激活和退出虚拟环境。首先确保在 shell 配置文件中添加了
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
我使用的是zsh,所以在家目录(~)下的.zshrc中添加了上述两行命令。
接着在需要使用虚拟环境的目录(通常是项目目录)中:建立一个.python-version的文本文件,将虚拟环境名称(如my-virtual-env-3.6.1)写在里面即可。之后每次进/出该目录时,虚拟环境都将自动激活/退出。
也可以用命令手动激活和退出:
$ pyenv activate my-virtual-env-3.6.1
$ pyenv deactivate
查看所有虚拟环境、删除虚拟环境等更多命令和其他使用细节,请参考官方文档。