#简介python
提到 Python 环境管理,更多人可能会首先想到 virtualenv。但与用于建立独立包环境的 virtualenv 不一样,pyenv 的做用仅限于维护不一样版本的 Python。它的使用不依赖于 Python,是一个简单、独立的纯 shell 脚本工具。pyenv 也以 pyenv-virtualenv 插件的形式支持 virtualenv,强烈建议使用。安装后比较方便的是能够在你 cd 到项目目录时自动切换相应的虚拟环境,而不用总是 source
.git
<br /> ###需求 ------------ 出于种种缘由,不少人的电脑上会同时安装不少个版本的 Python,好比会有 2.7 + 3.4。通常在 windows 下咱们均可以经过使用绝对路径的方式来绕过系统对 PATH 环境变量的查询;在 Linux 下除了这种方式外,还能够在脚本文件开头显示指定须要使用的解释器,就像这样:`#!/usr/bin/env python2.7` 或 `#!usr/bin/env python3.4`。一旦特定版本的解释器被打开后,就不用再担忧 PATH 的问题了。github
pyenv 的美好之处在于,他并无使用将不一样的 $PATH
植入不一样的 shell 这种高耦合的工做方式,而是简单地在 $PATH
的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin
。全部对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而架空了后面的系统路径。 <br /> #安装sql
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
<br /> ###自动安装做者很亲切地提供了一个自动安装工具:shell
$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
将 pyenv 检出到你想安装的目录。建议路径为:$HOME/.pyenv
django
$ cd $ git clone git://github.com/yyuu/pyenv.git .pyenv
<br /> 2. 添加环境变量。`PYENV_ROOT` 指向 pyenv 检出的根目录,并向 `$PATH` 添加 `$PYENV_ROOT/bin` 以提供访问 `pyenv` 这条命令的路径windows
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile 这里的 shell 配置文件(`~/.bash_profile`)依不一样 Linux 而需做修改——Zsh:`~/.zshenv`;Ubuntu:`~/.bashrc`
<br /> 3. 向 shell 添加 `pyenv init` 以启用 shims 和命令补完功能bash
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile 配置文件的位置同上一条同样须要修改
<br /> 4. 重启 shell(由于修改了 `$PATH`)python2.7
$ exec $SHELL
<br /> #使用curl
查看当前 pyenv 可检测到的全部版本,处于激活状态的版本前以 * 标示。
$ pyenv versions 2.5.6 2.6.8 *2.7.6 (set by /home/yyuu/.pyenv/version) 3.3.3 jython-2.5.3 pypy-2.2.1
<br /> ###pyenv version ------------ 查看当前处于激活状态的版本,括号中内容表示这个版本是由哪条途径激活的(global、local、shell)
$ pyenv version 2.7.6 (set by /home/yyuu/.pyenv/version)
<br /> ###pyenv install ------------ 使用 python-build(一个插件) 安装一个 Python 版本,到 `$PYENV_ROOT/versions` 路径下。
$ pyenv install -v 2.7.3
/tmp/python-build.xxx
里面关心一下下载速度。若是太慢,能够直接在 shell 里 ctrl-c
终止这次下载,而后 python-build 会自动去 python.org/ftp
下载。不必定哪一个更快。 <br /> ###pyenv uninstall卸载一个版本
$ pyenv uninstall 2.7.3
<br /> ###pyenv rehash ------------ 为全部已安装的可执行文件 (如:`~/.pyenv/versions/*/bin/*`) 建立 shims,所以,每当你增删了 Python 版本或带有可执行文件的包(如 pip)之后,都应该执行一次本命令
$ pyenv install 2.7.3 $ pyenv rehash
<br /> ###pyenv global ------------ 设置全局的 Python 版本,经过将版本号写入 `~/.pyenv/version` 文件的方式。
$ pyenv global 3.4.0
<br /> ###pyenv local ------------ 设置面向程序的本地版本,经过将版本号写入当前目录下的 `.python-version` 文件的方式。经过这种方式设置的 Python 版本优先级较 global 高。pyenv 会从当前目录开始向上逐级查找 `.python-version` 文件,直到根目录为止。若找不到,就用 global 版本。
$ pyenv local 2.7.3
<br /> ###pyenv shell ------------ 设置面向 shell 的 Python 版本,经过设置当前 shell 的 `PYENV_VERSION` 环境变量的方式。这个版本的优先级比 local 和 global 都要高。`--unset` 参数能够用于取消当前 shell 设定的版本。
$ pyenv shell pypy-2.2.1 $ pyenv shell --unset
吐一句:OSC 对 Markdown 的着色处理感受不如 github 上的灰度来得干净啊,本文我已经尽力了~