概述
在 Python 的世界中目前存在 Python 2 和 3 两个版本,虽然只有两个版本但是,版本之间还是有很多差别的,所以很难兼容,一般成熟的库都会支持两个版本,但是,在一个机器上维护多个版本的 Python 是件麻烦事,pyenv 的出现让这个麻烦事变得非常容易,本文将讲解如何在 Ubuntu 中安装 pyenv 以及使用 pyenv 管理多套 python 环境。
安装 pyenv
这里使用的是普通的用户,所以安装的时候是用 sudo 的,如果使用的 root 用户的话,需要确保你以后也是以 root 用户使用 pyenv,因为第三行和第四行是设置 pyenv 的 ROOT 目录的。
[root@liqiang.io]# apt-get install git python-pip make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev
[root@liqiang.io]# pip install virtualenvwrapper
[root@liqiang.io]# git clone https://github.com/yyuu/pyenv.git ~/.pyenv
[root@liqiang.io]# git clone https://github.com/yyuu/pyenv-virtualenvwrapper.git ~/.pyenv/plugins/pyenv-virtualenvwrapper
[root@liqiang.io]# echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
[root@liqiang.io]# echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
[root@liqiang.io]# echo 'eval "$(pyenv init -)"' >> ~/.bashrc
[root@liqiang.io]# echo 'pyenv virtua lenvwrapper' >> ~/.bashrc
一些常用命令
查看当前 pyenv 管理的版本
[root@liqiang.io]# pyenv versions
* system (set by /home/tyrael/.pyenv/version)
2.7.11
3.5.2
查看可安装的所有版本
[root@liqiang.io]# pyenv install --list
Available versions:
2.1.3
...
2.7
2.7.1
...
安装指定版本的 python
假设我希望安装 python 2.7.11 版本,那么直接敲这条命令即可:
[root@liqiang.io]# pyenv install 2.7.11
安装完成之后需要对数据库进行更新:
[root@liqiang.io]# pyenv rehash
设置全局的 python 版本
现在也只是 pyenv 管理了一些 python 版本,如果我们需要直接使用 python 命令来使用指定版本的 python,那么需要使用 pyenv 设置全局的 python 版本,设置命令为:
[root@liqiang.io]# pyenv global 2.7.11
然后使用再敲一次命令pyenv versions
将会看到指定版本前面有个 * 号。
[root@liqiang.io]# pyenv global 2.7.11
[root@liqiang.io]# pyenv versions
system
* 2.7.11 (set by /home/tyrael/.pyenv/version)
3.5.2
然后可以使用 python version
确认 python 版本:
[root@liqiang.io]# python --version
Python 2.7.11
管理虚拟环境
在没有使用 pyenv 的时候,我们会使用 virtualenv 来管理包,但是,当我们使用了 pyenv 后,默认的 virtualenv 就不起作用了,因此,我们需要使用 pyenv 的扩展插件 pyenv-virtuanenv。但是我更习惯使用 virtualenvwrapper,所以这里安装是 virtualenv 的扩充版本 virtualenvwrapper。
其实在之前的安装步骤,我们也已经安装上去了,所以下面直接使用即可。
创建虚拟环境
启动 pyenv-virtualenvwrapper
[root@liqiang.io]# pyenv virtualenvwrapper
创建虚拟环境
[root@liqiang.io]# mkvirtualenv test
安装依赖包
[root@liqiang.io]# pip install ipython
验证版本
[root@liqiang.io]# ipython
然后会看到提示信息:
[root@liqiang.io]# ipython
Python 3.5.2 (default, Aug 27 2016, 20:30:13)
Type "copyright", "credits" or "license" for more information.
IPython 5.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
这里是 python 3.5.2 ,没错,所以表示 virtualenvwrapper 切换成功,我们可以使用 python 3.5.2 进行一些实验了开发了。