使用pyenv创建多版本python环境

论坛 期权论坛 期权     
飞污熊   2019-7-15 08:58   2942   0

以前一直使用
  1. virtualenv
复制代码
来管理python的包环境,但是有时候我需要多个python版本环境时候就不能愉快的玩耍了。而pyenv可以帮到我。
pyenv是针对python版本的管理,通过修改环境变量的方式实现,在其官网说明上很清楚, 通过在PATH最前面插入
  1. shims
复制代码
来决定应用使用的python版本,从而将你的命令传递给正确的python程序。
我的系统环境是CentOS7.2
[h1]理解Shims[/h1]pyenv会在你的PATH最前面插入一个
  1. shims
复制代码
目录:
  1. $(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin
复制代码
通过一个
  1. rehashing
复制代码
操作就可以在该目录匹配所有已经安装的不同版本的python命令,比如
  1. python
复制代码
,
  1. pip
复制代码
等。所有对Python可执行文件的查找都会首先被这个shims路径截获,后面的设置就不生效了。
[h1]安装[/h1]推荐自动安装(保证系统上面先安装git):
  1. curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
复制代码
Copy
[h1]环境变量[/h1]编辑
  1. ~/.bash_profile
复制代码
,最后面加入:
  1. export PYENV_ROOT="$HOME/.pyenv"export PATH="$PYENV_ROOT/bin:$PATH"eval "$(pyenv init -)"eval "$(pyenv virtualenv-init -)"export PYENV_VIRTUALENV_DISABLE_PROMPT=1
复制代码
Copy
重启 shell:
  1. exec $SHELL
复制代码
Copy
[h1]常用命令[/h1]
    1. pyenv versions
    复制代码
    – 查看系统当前安装的python列表
    1. pyenv version
    复制代码
    – 查看系统当前使用的python版本
    1. pyenv install -v 3.5.3
    复制代码
    – 安装python
    1. pyenv uninstall 2.7.13
    复制代码
    – 卸载python
    1. pyenv rehash
    复制代码
    – 为所有已安装的可执行文件(如:~/.pyenv/versions/bin/)创建shims, 因此每当你增删了Python版本或带有可执行文件的包(如 pip)以后,都应该执行一次本命令)
[h1]版本切换[/h1]
    1. pyenv global 3.5.3
    复制代码
    – 设置全局的Python版本,通过将版本号写入
    1. ~/.pyenv/version
    复制代码
    文件的方式
    1. pyenv local 2.7.13
    复制代码
    – 设置面向程序的本地版本,通过将版本号写入当前目录下的
    1. .python-version
    复制代码
    文件的方式。通过这种方式设置的Python版本优先级较global高。
    1. pyenv shell 2.7.13
    复制代码
    - 设置面向shell的Python版本,通过设置当前shell的
    1. PYENV_VERSION
    复制代码
    环境变量的方式
优先级: shell > local > global
[h1]卸载pyenv[/h1]
  • 禁用pyenv很简单,只需要在
    1. ~/.bash_profile
    复制代码
    中的
    1. pyenv init
    复制代码
    那行删了即可。
  • 完全移除pyenv,先执行上面第1步,然后删了pyenv的根目录:
    1. rm -rf $(pyenv root)
    复制代码
[h1]插件pyenv-virtualenv[/h1]官网地址: https://github.com/pyenv/pyenv-virtualenv
使用自动安装pyenv后,它会自动安装部分插件,通过
  1. pyenv-virtualenv
复制代码
插件可以很好的和
  1. virtualenv
复制代码
结合
另外,一个可选配置是在
  1. ~/.bash_profile
复制代码
最后添加:
  1. eval "$(pyenv virtualenv-init -)"
复制代码
可以实现自动激活虚拟环境,这个特性非常有用建议都加上。
  • 创建虚拟环境:
    1. pyenv virtualenv 2.7.13 virtual-env-2.7.13
    复制代码
    ,默认使用当前环境python版本。在文件夹
    1. $(pyenv root)/versions/my-virtual-env-2.7.13
    复制代码
    中创建一个基于Python 2.7.13的虚拟环境。
  • 列出虚拟环境:
    1. pyenv virtualenvs
    复制代码
    ,对每个virtualenv显示2个, 短的只是个链接,那个
    1. *
    复制代码
    表示当前激活的。
  • 激活虚拟环境:
    1. pyenv activate virtual-env-2.7.13
    复制代码
  • 退出虚拟环境:
    1. pyenv deactivate
    复制代码
  • 删除虚拟环境:
    1. pyenv uninstall virtual-env-2.7.13
    复制代码
如果
  1. eval "$(pyenv virtualenv-init -)"
复制代码
写在你的shell配置中(比如上面的~/.bash_profile), 那么当
  1. pyenv-virtualenv
复制代码
进入/离开某个含有
  1. .python-version
复制代码
目录时会自动激活/退出虚拟环境。
场景使用流程:
  1. # 先创建一个虚拟环境pyenv versionspyenv virtualenv 2.7.13 virtual-env-2.7.13# 进入某个目录比如/root/work/flask-demopyenv local virtual-env-2.7.13# 然后再不需要去手动激活了
复制代码
Copy
使用pyenv来管理多版本的python命令,使用pyenv-virtualenv插件来管理多版本python包环境。爽歪歪~

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP