您的位置:首页 > 编程语言 > Python开发

pyenv管理多版本python和虚拟环境常用命令

2017-07-24 20:38 671 查看
一直以来是我是采用virtualenvwrapper来管理不同项目的python环境,最近看了下作者的github主页,发现有3年没更新了,不知道作者以后是否还维护此项目,所以就找了一下其他管理python多版本的工具,发现了pyenv,看了下挺不错的,拿来测试下。

pyenv原理

pyenv 的原理,简单的说就是在系统PATH 最前面插入一个 $(pyenv root)/shims 目录。这样, pyenv 就可以通过控制 shims 目录中的Python版本号,来灵活地切换至我们所需的Python版本。

安装pyenv

pyenv有多种安装方法,大家可以去github的pyenv查看,官方推荐用基于github的安装方式。

我也是用这种方法来安装的,这种方法同时安装pyenv的多个插件,很有用,而且python版本库也是最新的。

安装

curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash


除了安装pyenv之外,同时还安装了以下插件:

pyenv-doctor

pyenv-installer

pyenv-update

pyenv-virtualenv

pyenv-which-ext

安装完成后,打开~/.bashrc,把以下命令添加到系统环境变量:

export PATH=$HOME/.pyenv/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"


然后执行source ~/.bashrc。

然后在命令行执行pyenv -v就可以查看安装的pyenv信息了。

ps:为了确定pyenv是否正确安装,可以执行pyenv doctor查看。

升级

pyenv update


卸载:

pyenv安装在$PYENV_ROOT(默认:~/.pyenv

)下,要卸载,直接移除目录即可。

rm -rf ~/.pyenv


再在环境变量文件删除一下三行:

export PATH=$HOME/.pyenv/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"


pyenv常用命令

查看pyenv版本信息

pyenv -v


升级pyenv

pyenv update


查看可安装的python版本

pyenv install --list


安装指定版本的python环境

# 这里我安装3.6.2
# 同样的,需要安装一些依赖包,不然会报错
yum install -y zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel
pyenv install 3.6.2


pyenv 安装原理:

从官网下载对应的版本压缩包到/tmp/目录,然后在/tmp/目录 执行编译安装,安装到~/.pyenv/versions/下面。

当pyenv下载很慢时,可以先手动下载对应的版本压缩包,放到~/.pyenv/cache/下面,pyenv会校验md5值和完整性,确认无误的话就不会重新下载直接从这里安装。

注意:下载的包名称要和自动下载的包名称一致!

查看系统中可用的python版本

# 处于激活状态的版本前面标了*
pyenv versions


查看当前处于激活状态的版本

# 括号中内容表示这个版本是由哪条途径激活的(global、local、shell)
pyenv version


卸载一个版本

pyenv uninstall 3.6.2


更新数据库

# 一般安装或卸载python版本最好更新一下数据库
pyenv rehash


切换python版本

pyenv 有global(当前系统),local(当前目录),shell三个等级来管理python环境。

优先级shell > local > global

当前目录中的 .python-version 配置优先于系统全局的 ~/.pyenv/version 配置。

[root@localhost mx]# pwd
/root/mx
# 切换全局python环境为系统版本(2.6.6)
[root@localhost mx]# pyenv global system
[root@localhost mx]# pyenv version
system (set by /root/.pyenv/version)
[root@localhost mx]# python -V
Python 2.6.6

# 切换此目录python环境为3.6.2
[root@localhost mx]# pyenv local 3.6.2
[root@localhost mx]# pyenv version
3.6.2 (set by /root/mx/.python-version)
[root@localhost mx]# pip -V
pip 9.0.1 from /root/.pyenv/versions/3.6.2/lib/python3.6/site-packages (python 3.6)


创建虚拟环境

我们一般会为一个项目创建一个虚拟环境,pyenv同样可以实现类似virtualenv这样的功能。

# 命令格式为pyenv virtualenv PYTHON_VERSION PROJECT_NAME
[root@localhost ~]# pyenv virtualenv 3.6.2 myblog_py36


查看虚拟环境列表

pyenv virtualenvs


[root@localhost ~]# pyenv virtualenvs
3.6.2/envs/myblog_py36 (created from /root/.pyenv/versions/3.6.2)
myblog_py36 (created from /root/.pyenv/versions/3.6.2)


进入虚拟环境

pyenv active ENV_NAME
# 我们可以把项目目录的local环境指定为创建的虚拟环境,这样就可以用local或者activate两种方法进入虚拟环境了。


[root@localhost ~]# pyenv activate myblog_py36
(myblog_py36) [root@localhost ~]# pip -V
pip 9.0.1 from /root/.pyenv/versions/3.6.2/envs/myblog_py36/lib/python3.6/site-packages (python 3.6)


退出虚拟环境

pyenv deactivate ENV_NAME


(myblog_py36) [root@localhost ~]# pyenv deactivate
[root@localhost ~]# pyenv version
system (set by /root/.pyenv/version)
[root@localhost ~]#


卸载虚拟环境

pyenv uninstall ENV_NAME


以上命令基本可以满足绝大部分python开发环境搭建的需求,更多命令请关注官方github
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: