用Pyenv 和 Virtualenv 搭建单机多版本 Python 虚拟开发环境

做为主流开发语言, 用python 开发的程序愈来愈多。 方便的是大多linux系统里面都默认集成了python, 开发能够随时随地开始。 但有时候这也成为了一个短板, 好比说有时候咱们须要开发和调试一些须要安装在默认python路径里的程序, 反复地修改和安装会使系统目录愈来愈乱,这对于一些有洁癖的程序员来讲是不可接受的。 还有时候咱们须要在不一样的python版本上开发, 而系统通常只会自带一到两种python版本, 切换起来更是麻烦。python

本文将介绍如何利用pyenv 和virtualenv 在单机上搭建多版本python 虚拟开发环境。linux

首先咱们搞清楚pyenv 和virtualenv分别是干什么的。git

pyenv能够帮助你在一台开发机上创建多个版本的python环境, 并提供方便的切换方法。程序员

virtualenv则提供了一种功能, 就是将一个目录创建为一个虚拟的python环境, 这样的话, 用户能够创建多个虚拟环境, 每一个环境里面的python版本能够是不一样的, 也能够是相同的, 并且环境之间相互独立。github

若是解释得还不是很清楚的话,咱们举例说明。ubuntu

首先咱们能够用pyenv 安装多个python 版本, 好比安装了2.5, 2.6, 3.3 三个版本。 用户能够随意切换当前默认的python版本。 但这时候, 每一个版本的环境还是惟一的, 若是咱们想在环境中安装一些库的话, 仍是会致使这个版本的环境被修改。 这个时候, 若是咱们用virtual env去创建虚拟环境, 就能够彻底保证系统路径的干净。不管你在虚拟环境中安装了什么程序, 都不会影响已安装版本的系统环境。bash

说了这么多, 仍是动手实践一下来得实在。本文的例子是在一台干净的Ubuntu机器上进行的python2.7

1. 首先咱们安装pyenvcurl

由于个人Ubuntu是干净的, 因此还须要先安装curl 和 git工具

sudo apt-get install curl git-core复制代码

接下来安装pyenv

curl -L https://raw.github.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash复制代码

这个命令会把pyenv安装到当前用户的 ~/.pyenv目录下.

同时, 咱们还须要把下面代码存到~/.bashrc文件中:

export PYENV_ROOT="${HOME}/.pyenv"

if [ -d "${PYENV_ROOT}" ]; then
  export PATH="${PYENV_ROOT}/bin:${PATH}"
  eval "$(pyenv init -)"
fi复制代码

这段代码的做用主要是指明pyenv的位置, 以便之后能够直接在命令行里面运行pyenv命令。 保存在~/.bashrc 文件中是为了每次用户登录后自动生效。

因此若是你是第一次运行命令而且没有注销的话, 这一段是不会生效的, 咱们还须要运行下面的命令令其生效

source ~/.bashrc复制代码

而后就能够直接在命令行里面敲pyenv了。

2. 安装一些必须的包

sudo apt-get build-dep python2.7复制代码

后面安装其余版本python的时候会须要这些包

3. 安装某个版本的python

首先咱们能够查看一下有哪些版本的python 能够安装

pyenv install --list复制代码

结果以下:

2.4
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
2.5
...复制代码

接下来, 做为例子咱们安装两个版本 (2.7.1 和 3.3.5)

pyenv install 2.7.1复制代码
pyenv install 3.3.5复制代码

安装完毕后, 咱们能够查看安装的状况

pyenv versions复制代码

输出结果以下:

* system (set by /home/tony/.pyenv/version)
  2.7.1
  3.3.5复制代码

简单来讲咱们已经在这台机器上安装了三个版本的python

system 表明当前系统的python 版本

2.7.1 和 3.3.5是咱们用pyenv安装的

*表示当前的python版本, 能够看到, 咱们还在使用的是默认的system 自带的python版本

4. 切换python版本作一下测试

既然已经安装了两个其余版本的python, 咱们来作一下测试

pyenv global 2.7.1复制代码

这条命令就是将当前python 版本切换到2.7.1

再次运行 pyenv versions, 结果以下:

system 
* 2.7.1 (set by /home/tony/.pyenv/version)
  3.3.5复制代码

能够看到当前的python 版本已经切换到2.7.1了, 若是还不放心, 直接运行 ‘python’ 命令进行验证:

tony@ubuntu:~$ python
Python 2.7.1 (r271:86832, May  9 2014, 01:07:17) 
[GCC 4.8.2] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>>复制代码

这里能够清楚看到, 当前版本确实是2.7.1

同理, 咱们能够继续用python global在各个版本之间进行切换, 若是要切换回系统版本, 请用:

pyenv global system复制代码

若是要卸载某个版本的python, 能够这样:

pyenv uninstall x.x.x复制代码

5. 利用virtualenv 建立虚拟python环境

如今咱们已经安装了多个python版本,可是这还不够, 某些有洁癖的程序员是必定要系统环境足够干净的,这时候咱们可使用virtualenv来建立虚拟python环境

virtualenv本是一个独立的工具,官网在这里:https://pypi.python.org/pypi/virtualenv

幸运的是,若是你是安装咱们前面的方式安装pyenv的,那它已经帮咱们以plugin的形式安装好了virtualenv, 咱们只要使用就行了

首先咱们建立一个2.7.1的虚拟环境

pyenv virtualenv 2.7.1 env271复制代码

这条命令在本机上建立了一个名为env271的python虚拟环境,这个环境的真实目录位于:~/.pyenv/versions/

注意,命令中的 ‘2.7.1’ 必须是一个安装前面步骤已经安装好的python版本, 不然会出错。

而后咱们能够继续经过 ‘pyenv versions’ 命令来查看当前的虚拟环境, 结果以下:

* system (set by /home/tony/.pyenv/version)
  2.7.1
  3.3.5
  env271复制代码

这里咱们能够看到, 除了已经安装的python版本, 咱们多出了一个env271的python虚拟环境

6. 切换和使用新的python虚拟环境

切换到新的虚拟环境的命令为

pyenv activate env271复制代码

接下来咱们的python环境就已经切换到2.7.1的虚拟环境了, 运行 ‘python’ 命令认证

(env271)tony@ubuntu:~$ python
Python 2.7.1 (r271:86832, May  9 2014, 01:07:17) 
[GCC 4.8.2] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>>复制代码

能够看到, python版本已是2.7.1, 并且是在虚拟环境之中 (env271)

下面基本上你就能够在这个虚拟环境里面随心所欲了 🙂 不再用担忧系统路径被搞乱的问题了。

若是要切换回系统环境, 运行这个命令便可

pyenv deactivate复制代码

那若是要删除这个虚拟环境呢? 答案简单并且粗暴,只要直接删除它所在的目录就好:

rm -rf ~/.pyenv/versions/env271/复制代码

至此大功告成!

本文简单介绍了如何利用pyenv 和virtualenv来单机多版本python虚拟开发环境的方法,

这两个工具还有不少功能, 没法一一详述,具体能够参考

相关文章
相关标签/搜索