在学习Python的时候,最经常遇到的问题就是包版本的问题,比如说这个应用需要libtool包的1.1.1版本,而之前开发的应用则只能运行在1.0.1版本上。那么怎么让两个应用都能够正常运行起来呢?聪明的开发者们提出了虚拟环境的概念,就像电脑的虚拟机一样,创建一个虚拟环境就像创建了虚拟机。你在虚拟环境里做任何操作都不会影响到其他的虚拟环境,也不会影响到系统环境。同时你也可以在你的虚拟环境里安装任何版本的包来进行测试。
在昨天的文章里介绍了Python使用的比较多的一个虚拟环境管理包virtualenv,这个包用在windows系统上比较多。而在Linux/Unix系统上用的比较多的是另外一个虚拟环境管理工具pyenv。
什么是pyenv
pyenv是一个虚拟环境管理工具,可以同时管理多个Python版本,并能以这些Python版本为模板来创建不同的虚拟环境,而且可以灵活的在这些虚拟环境之间进行切换。它具有以下优点:
- 可以直接修改全局Python版本(慎重操作,危险)
- 每个项目一个Python版本
- 从多个Python版本中同时搜索命令,方便测试跨版本软件。
既然这么方便,那么我们来看一下它是怎么使用的吧。
安装
目前这个软件还不支持在windows系统上使用,暂时只支持在Linux和Unix上安装。对于macOS,可以使用Homebrew来安装,官方文档上对应的链接是:https://github.com/pyenv/pyenv#homebrew-on-macos
对于Linux/Unix用户来说,有两种安装方式,第一种是根据官方文档来一步步安装,步骤如下:
1. 克隆安装软件。命令是
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
2. 定义环境变量
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
对于使用zsh的用户,需要把 ~/.bash_profile
改成~/.zshrc
。
对于使用Ubuntu的用户,需要把 ~/.bash_profile
改成~/.bashrc
3. 将pyenv init命令添加到shell里已启用shims和自动补全,shims是用于多版本Python选择的工具,添加命令如下:
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile