以下内容均转自我的博客 YuanBLQ
由于 python 拥有众多的版本,以及不同模块也有不同的版本。如果每个版本之间相互都不兼容那也就无所谓什么版本控制了,可是同一机器上各个版本的 python 可以相互兼容并存,而且同一模块不同版本有时需要的 python 版本是不相同的,所以 python 的版本控制显得尤为重要。
pyenv
是个 shell 脚本,能够轻松得实现各个不同版本 python 的相互间切换,而且各个版本的 python 切换不限于全局切换,甚至不同文件夹都可以拥有不同的 python 版本。
下面我们就来看看如何使用 pyenv
。
管理 python 版本
如果你既需要使用 python2
,也需要使用 python3
,pyenv
将是一个很高效的 python 版本管理工具。
由于 pyenv
是脚本插件,所以只能在类 UNIX 系统上使用。所以,如果你想在 windows 上安装,那就点击左上角去隔壁 virtualenv
瞧瞧。
安装 pyenv(Ubuntu)
-
确定你想把
pyenv
安装在哪。推荐安装在$HOME/.pyenv
,但你也可以安装在任意位置。$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
-
定义你
PYENV_ROOT
的环境变量来指定你把 pyenv 仓库克隆到了哪,并把$PYENV_ROOT/bin
添加到你的$PATH
中,这样就能在命令行使用pyenv
命令。$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
-
设置启动 shell 时自动加载 pyenv 脚本。在 shell 配置文件的最后面加上
eval "$(pyenv init -)"
。$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
-
重启 shell,使脚本生效。
$ exec $SHELL
-
安装不同的 python 版本到
$(pyenv root)/versions
文件夹。
在pyenv
安装之前的所有 python 版本都归为system
版本。 (可以用pyenv versions
查看当前安装的 python 版本)
在安装 python 之前,可以使用pyenv install -l
查看当前可以安装哪些 python 版本。
然后使用pyenv install 选择的版本
来安装你所选择的 python 版本。比如pyenv install 3.6.1
安装 python 官网的版本。
使用 git 更新 pyenv
如果你是按照上面的方法安装的 pyenv
,那你可以使用 git 来更新。
更新为最新的开发版
$ cd $(pyenv root)
$ git pull
更新为指定的版本
$ cd $(pyenv root)
$ git fetch
$ git tag
v0.1.0
$ git checkout v0.1.0
pyenv 的基本操作命令
-
pyenv versions
查看当前已安装的 python 版本 -
pyenv install ...
安装指定版本的 python -
pyenv global python版本
切换全局 python 版本 -
pyenv local python版本
切换当前文件夹下的 python 版本 -
pyenv shell python版本
切换当前 shell 中的 python 版本 -
pyenv version
查看当前使用的 python 版本
卸载 pyenv
- 如果你只是想禁用
pyenv
,那么把pyenv init
从 shell 的配置文件中移除,然后重启 shell 就行了(移除后pyenv
命令仍然能使用,但是版本切换命令不会生效)。 - 完整卸载 pyenv。执行上一步,然后把 pyenv 的根目录删除即可全部删除 pyenv(通过
pyenv install ...
安装的 python 版本都会删除)。rm -rf $(pyenv root)
卸载 pyenv 安装的 python 版本
- 使用
pyenv uninstall ...
命令。 - 直接删除
versions
文件夹下的对应 python 版本文件夹。
pyenv 其他操作命令
参见 commands.md
管理 python 模块版本
使用 virtualenv
和 virtualenvwrapper
管理 python 虚拟环境,每次都需要手动激活或退出。对于懒癌晚期患者,pyenv-virtual
的自动激活和退出虚拟环境功能简直不能再赞。另外搭配 pyenv
食用效果更佳。
安装 pyenv-virtualenv(Ubuntu)
由于 pyenv-virtualenv
是 pyenv
的一个插件,所以安装之前需要先安装 pyenv
。
注意:如果 pyenv
的安装目录不是 $HOME/.pyenv
需要确保克隆下来的仓库位于你所安装的 pyenv
目录下的 plugin
文件夹下。
接下来就可以执行安装步骤了:
- 克隆
pyenv-virtual
仓库到plugin
文件夹下。 - (可选/重点)添加
pyenv virtualenv-init
到你的 shell 配置文件中,这样进入指定文件夹自动进入虚拟环境,离开文件夹退出虚拟环境。$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
- 重启 shell。
创建 pyenv-virtualenv 虚拟环境
pyenv virtualenv 指定python版本 虚拟环境名字
pyenv virtualenv 虚拟环境名字
如果不指定 python 版本,则默认使用当前 pyenv version
的 python 版本。
创建的虚拟环境位于 $(pyenv root)/versions/
下的指定 python 版本的文件夹中 envs/
文件夹下。
激活虚拟环境
- 自动激活/退出
- 手动激活/退出
自动激活环境:
- 在
.bashrc
文件的最后添加eval "$(pyenv virtualenv-init -)"
,然后在 shell 中输入exec "$SHELL"
重启 shell,或者手动重启 shell。 - 在想要激活虚拟环境的文件夹中新建
.python-version
文件,并写入虚拟环境的名字(pyenv local python版本
该命令也是通过创建该文件来达到进入该文件夹后自动使用指定 python 版本的目的)。 - 以后进入该的文件夹就会自动激活虚拟环境,离开该文件夹就会退出虚拟环境。
手动激活环境:
-
pyenv activate 虚拟环境名字
激活虚拟环境。 -
pyenv deactivate
退出虚拟环境。
删除虚拟环境
有 2 种方法:
- 删除
$(pyenv root)/versions
和$(pyenv root)/versions/{version}/envs
的相关文件夹即可。 - 命令行运行
pyenv uninstall 虚拟环境的名字