使用pyenv+virtualenv方式部署python多版本
pyenv vs virtualenv
pyenv 是针对 python 版本的管理,通过修改环境变量的方式实现;
virtualenv 是针对python的包的多版本管理,通过将python包安装到一个模块来作为python的包虚拟环境,通过切换目录来实现不同包环境间的切换。
pyenv 原理
pyenv 的美好之处在于,它并没有使用将不同的 $PATH 植入不同的 shell 这种高耦合的工作方式,而是简单地在 $PATH 的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而架空了后面的系统路径。
pyenv 安装使用 (安装使用网络yum源)
系统版本:
1)、安装依赖包:
yum install gcc -y
yum install python-devel -y
sudo yum install readline readline-devel readline-static -y
sudo yum install openssl openssl-devel openssl-static -y
sudo yum install sqlite-devel -y
sudo yum install bzip2-devel bzip2-libs -y
yum -y install python-setuptools
easy_install pip
2)、安装pyenv
pyenv需要git工具,需要先安装git工具
yum -y install git
pyenv 提供了自动安装的工具,执行命令安装即可:
curl -Lhttps://raw.githubusercontent.com/yyuu/pyenv-installer/
master/bin/pyenv-installer | bash
如果手动安装,可以执行此命令:
将 pyenv 检出到你想安装的目录。建议路径为:$HOME/.pyenv
$ cd
$ git clone git://github.com/yyuu/pyenv.git .pyenv
添加环境变量:
vi ~/.bashrc ##专用于当前用户bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH="${PYENV_ROOT}/bin:${PATH}"
eval "$(pyenv init -)"
fi
# source ~/.bashrc //立即生效
至此,pyenv安装也就完成了,接下来看看都有哪些python版本可以安装
以上这些,都是我们可以安装的版本,centos7默认安装的python版本为2.7.5
安装一个3.6.1的版本试试:
使用
创建虚拟环境
$ pyenv virtualenv3.6.1my-virtual-env-3.6.1(自定义的名称)
若不指定python 版本,会汇报认使用当前环境python版本。
列出当前虚拟环境pyenv virtualenvs:
激活虚拟环境pyenv activatemy-virtual-env-3.6.1
激活虚拟环境后,需要执行此命令,更新一下数据库
#pyenv rehash
直接进入python查看:
查看当前正在使用的版本:
注:其中的星号表示当前正在使用的版本
退出虚拟环境pyenv deactivate
删除虚拟环境pyenv uninstall my-virtual-env
注意:
此上方法是通过网络下载此安装包,(网速不好的时候时间偏长),或着也可以通过本地安装方式:(安装python2.7.10)
1)、首先下载python2.7.10的安装包,可以使用pyenv install 2.7.10 查看下载源:
如:
注:将上面的版本替换即可,下载成功后,将安装包上传至~/.pyenv/cache目录下:如
然后执行命令安装:
pyenv install 2.7.10
系统默认会从cache路径下执行本地安装2.7.10
查看当前支持的版本:
如果使用2.7.10版本,和上面提到的使用3.6.1的版本一样。
1)、创建虚拟环境
2)、激活虚拟环境
例:
创建完虚拟环境后,就可以随意切换python玩了;
命令注释:
例如:
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
根据当前的虚拟环境,我们可以执行以下命令随意切换:
切换到2.7.10:
切换到3.6.1版本