作者:admin,发布日期:2019-02-06
阅读:3874;评论:0
写在开头
经常遇到这样的情况: 系统自带的python是2.x,自己需要python 3.x,此时需要在系统中安装多个python,但又不能影响系统自带的python,即需要实现python的多版本共存,pyenv就是这样一个python版本管理器。pyenv可以帮助你管理linux下的python版本及其依赖,并支持切换全局版本。
项目地址
https://github.com/pyenv/pyenv
安装
由于博主日常使用Centos7,这里就以Centos7做模板,其他版本系统可参考项目下面的说明。
首先安装git和gcc,pyenv安装时需要这两个软件做依赖
yum -y install git gcc
然后安装编译python需要的依赖(参考:https://github.com/pyenv/pyenv/wiki/Common-build-problems)
sudo yum install @development zlib-devel bzip2 bzip2-devel readline-devel sqlite \ sqlite-devel openssl-devel xz xz-devel libffi-devel findutils
按照项目文档,我们使用作者写的安装脚本一键安装
项目地址:https://github.com/pyenv/pyenv-installer
curl https://pyenv.run | bash
安装完成后,我们按照提示在~/.bashrc里加入命令来支持命令提示
vim ~/.bashrc
加入以下内容,然后输入:wq!保存
export PATH="/root/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" export PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM=1 export PYTHON_BUILD_MIRROR_URL="https://npm.taobao.org/mirrors/python/"
安装完成,我们重启bash来获得命令提示
exec bash
安装第一个python版本
pyenv安装完成后,我们就可以开始安装python,这里我们安装最新版python
使用pyenv install -l 列出可安装版本
[root@ecs-cbaf ~]# pyenv install -l Available versions: ... 3.7.1 3.7.2 3.8-dev ...
开始安装
-v 显示安装过程,如果出现问题,我们可以通过安装过程看到错误。
pyenv install 3.7.2 -v
安装完成,我们把系统默认python版本切换到3.7.2
[root@ecs-cbaf ~]# pyenv global 3.7.2 [root@ecs-cbaf ~]# pyenv version version version-file version-file-read version-file-write version-name version-origin versions [root@ecs-cbaf ~]# pyenv versions system * 3.7.2 (set by /root/.pyenv/version)
测试是否切换成功
[root@ecs-cbaf ~]# python -V Python 3.7.2 [root@ecs-cbaf ~]# pip -V pip 18.1 from /root/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pip (python 3.7)
至此,python安装成功
更新
pyenv update
卸载
删除安装目录
rm -fr ~/.pyenv
然后删除在.bashrc里加入的内容
常用命令
pyenv install --list # 列出可安装版本 pyenv install <version> # 安装对应版本 pyenv install -v <version> # 安装对应版本,若发生错误,可以显示详细的错误信息 pyenv versions # 显示当前使用的python版本 pyenv which python # 显示当前python安装路径 pyenv global <version> # 设置默认Python版本 pyenv local <version> # 当前路径创建一个.python-version, 以后进入这个目录自动切换为该版本 pyenv shell <version> # 当前shell的session中启用某版本,优先级高于global 及 local