Python版本管理神器之pyenv

前言

之前一直在用 virtualenv 和 virtualenvwrapper 这两个工具管理 Python 虚拟环境,但是有个问题,就是想要创建指定版本的虚拟环境就必须先安装指定的 Python 版本,比如我想创建一个基于 Python3.6 的虚拟环境,那么我首先得安装 Python3.6(不管是直接安装还是源码安装,总之比较麻烦),然后在基于安装好的版本去创建虚拟环境,自从知道了 pyenv 这个神器之后,就几乎不用上述工具了。 ~ pyenv 好像对 Windows 平台不太友好。

介绍

GitHub https://github.com/pyenv/pyenv

Ubuntu安装

下载

  • 方式一(速度慢):
1
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
  • 方式二(速度快):
1
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

执行上述操作之后,会将 pyenv 安装到当前用户的 ~/.pyenv 目录下

编辑 .bashrc 文件

  1. 打开 .bascrc 文件
1
vim ~/.bashrc

2 .将一下内容复制到末尾

1
2
3
4
export PYENV_ROOT=/root/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
export PATH=$PYENV_ROOT/shims:$PATH
eval "$(pyenv init -)"

3.更新 .bashrc 文件

1
source ~/.bashrc

安装 Python 依赖

1
2
3
4
5
sudo apt-get install make build-essential libssl-dev zlib1g-dev
sudo apt-get install libbz2-dev libreadline-dev libsqlite3-dev wget curl
sudo apt-get install llvm libncurses5-dev libncursesw5-dev
sudo apt-get update

测试使用

查看是否安装成功

  • 查看当前安装版本
1
2
3
4
IN:
pyenv --version
OUT:
pyenv 1.2.27-34-gbba1289e
  • 查看当前所有 Python 版本
    1
    2
    3
    4
    IN:
    pyenv versions
    OUT:
    * system (set by /root/.pyenv/version)

    表示当前只有系统默认的版本

安装 Python 指定版本

  • 查看当前所有可安装版本
    1
    pyenv install --list
  • 安装想要安装的版本(这里选择 Python3.6.5)
1
2
3
4
5
6
7
IN:
pyenv install 3.6.5
OUT:
Downloading Python-3.6.5.tar.xz...
-> https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
Installing Python-3.6.5...
Installed Python-3.6.5 to /root/.pyenv/versions/3.6.5
  • 再次查看所有 Python 版本
1
2
3
4
5
IN:
pyenv versions
OUT:
* system (set by /root/.pyenv/version)
3.6.5
  • 切换 Python 版本

    有三种切换方式 glocal local shell*

    glocal 全局环境,在未再次使用 glocal切换环境之前,一直使用此环境。

    local 本次登录环境,重启后,则环境失效,并返回当前glocal的环境。

    shell 局部(临时)环境。关闭命令行窗口,则环境失效,并返回当前glocal的环境。

    pyenv glocal 3.6.5

  • 卸载指定版本

1
pyenv uninstall 3.6.5

安装 virtualenv

  • 下载

pyenv 已经帮我们以 plugin 的形式安装好了,如果未安装,则需要我们手动安装一下

1
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
  • 编辑 .bashrc 文件
1
vim ~/.bashrc
  • 将以下内容复制到末尾
    1
    eval "$(pyenv virtualenv-init -)"
  • 更新 .bashrc 文件
1
source ~/.bashrc

创建虚拟环境

  • 使用说明: pyenv virtualenv 3.6.5 virtual_name

  • 实际使用:pyenv virtualenv 3.6.5 test

  • 进入虚拟环境

1
pyenv activate test
  • 退出虚拟环境
    1
    pyenv deactivate
  • 删除虚拟环境
1
pyenv uninstall test

输入yes即可

常用命令

使用方式: pyenv <命令> [<参数>]

1
2
3
4
5
6
7
8
9
10
命令:
commands 查看所有命令
local 设置或显示本地的 Python 版本(当前目录及其子目录)
global 设置或显示全局 Python 版本
shell 设置或显示 shell 指定的 Python 版本(本次会话)
install 安装指定 Python 版本
uninstall 卸载指定 Python 版本)
version 显示当前的 Python 版本及其本地路径
versions 查看所有已经安装的版本
which 显示安装路径

问题

1.切换不成功
如果遇到切换之后,Python版本还是系统的默认版本的话,就需要配置一下环境变量,在 ~/.zshrc 或 ~/.bash_profile 文件最后写入:

1
2
3
if which pyenv > /dev/null;
then eval "$(pyenv init -)";
fi

转自: 健康快乐每一天–Python版本管理神器之pyenv