安装环境: centos 7
[root@centos_7 cache]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
安装pyenv 到本地
[root@centos_7 cache]# git clone git://github.com/yyuu/pyenv.git ~/.pyenv
系统要先安装 git :
如果没有,则直接yum 安装: yum install -y git
为pyenv 提供环境配置并生效
[root@centos_7 cache]# cat ~/.bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
添加最后的三行配置,保存文件,
source ~/.bashrc 使配置生效
或者 exec $SHELL -l
安装系统的环境
[root@centos_7 cache]# yum groupinstall "Development Tools" -y
[root@centos_7 cache]# yum install -y python-devel libevent-devel python-pip gcc xz-devel openssl-devel readline-devel sqlite-devel bzip2-devel
列出可以安装的 python 版本
[root@centos_7 cache]# pyenv install --list
安装 python 3.5.2
因为 pyenv 是先将 python 安装包下载到 ~/.pyenv/cache/ 目录,然后校验 md5值,再安装的。
所以,在实际安装过程中,如果用 pyenv install 3.5.2 -v 的命令安装 python 比较慢,则可以将python-3.5.2 下载到 cache/ 目录,再用 pyenv install 3.5.2 -v 命令安装。
例如:
[root@centos_7 cache]# wget http://mirrors.sohu.com/python/3.5.2/Python-3.5.2.tar.xz -P ~/.pyenv/cache/
在搜狐的镜像下载 Python-3.5.2.tar.xz 到 cache/ 目录
然后:
[root@centos_7 cache]# pyenv install 3.5.2 -v
速度会比较快
安装完成后,需要刷新 pyenv
[root@centos_7 cache]# pyenv rehash
再查看系统中的 python 版本:
[root@centos_7 cache]# pyenv versions
* system (set by /root/.pyenv/version)
3.5.2
设置在特定的目录使用特定的 python 版本
pyenv的global子命令用于设定全局的版本,local子命令用于设置当前工作目录的特定python版本,version则用于查看当前正在使用的版本,新建两个目录,分别设置各自使用的版本
例如: 设置在 ~/py35 目录使用 python3.5.2
[root@centos_7 py35]# pwd
/root/py35
[root@centos_7 py35]# pyenv local 3.5.2
[root@centos_7 py35]# pyenv local
3.5.2
[root@centos_7 py35]# python -V
Python 3.5.2
切换到其他目录:
[root@centos_7 ~]# python -V
Python 2.7.5
可以看到 python 3.5.2 版本,只在~/py35 目录生效,切换到其他目录,就是CentOS 7系统默认的2.7.5 版本了。
删除当前目录下的 python 版本
要删除前面的 local 设置,只需要使用 --unset 或者 将目录下的 .python-version 文件删除
[root@centos_7 py35]# pyenv local --unset
[root@centos_7 py35]# python -V
Python 2.7.5
变回系统默认的 2.7.5 版本了
通过删除 .python-version 文件,取消特定目录使用特定 python 版本:
[root@centos_7 py35]# rm -rf .python-version
[root@centos_7 py35]# ls
[root@centos_7 py35]# pyenv local
pyenv: no local version configured for this directory
[root@centos_7 py35]# python -V
Python 2.7.5
方法二 :
因为:
[root@centos_7 ~]# pyenv global 3.5.2 # 设置全局的 Python 版本,通过将版本号写入 ~/.pyenv/version 文件的方式。
[root@centos_7 ~]# pyenv local 3.5.2 # 设置 Python 本地版本,通过将版本号写入当前目录下的 .python-version 文件的方式。通过这种方式设置的 Python 版本优先级较 global 高。
所以,将文件删除,也可以取消 global 和 local 的设置了。
安装 pyenv-virtualenv 插件
pyenv virtualenv 是pyenv的插件,为pyenv设置的python版本提供隔离的虚拟环境,设置虚拟环境后,在这个目录下面安装的第三方库及修改库搜索路径都不会影响其他环境,相当于一个沙盒环境,互相不影响。
安装 pyenv-virtualenv插件
[root@centos_7 py35]# git clone git://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
重新载入环境
exec $SHELL
pyenv-virtualenv会为pyenv引入一些新的命令,例如 virtualenv/virtualenv-delete 用于创建/删除虚拟环境,virtualenvs用于列出所有的虚拟环境,activate /deactivate用于激活和禁用虚拟环境
创建一个虚拟环境
[root@centos_7 ~]# mkdir venv35
[root@centos_7 ~]# cd venv35
[root@centos_7 venv35]# ls
[root@centos_7 venv35]# pyenv virtualenv 3.5.2 env35
查看可用的版本:
[root@centos_7 venv35]# pyenv versions
* system (set by /root/.pyenv/version)
3.5.2
3.5.2/envs/env35
env35
在此虚拟环境目录下面安装 ipython,切换到其他设定的版本目录中无法使用,说明是相互隔离的
pyenv-virtualenv 只需要记住三条命令:
pyenv virtualenv 3.5.2 env35 #创建一个 Python 版本为 3.5.2 的环境, 环境叫做 env
pyenv activate env35 #激活 env 这个环境, 此时 Python 版本自动变为 3.3.0, 且是独立环境
pyenv deactivate #离开已经激活的环境