更新:2021-07-22 环境:CentOS 7

简介

pyenv 可以方便地在多个 Python 版本之间切换。

安装 pyenv

手动安装可参考 pyenv 项目主页或通过 pyenv-installer 安装,本文使用后者进行安装。

1)安装编译 Python 所需的依赖环境
因为 pyenv 是从源码安装 Python,因此需要先安装相关依赖包,避免后续安装 Python 失败,依赖包参考 Suggested build environment

  1. yum install -y gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel

2)安装 pyenv
可以切换到自己的帐号执行,不需要使用 root 权限

  1. # 可能需要配置代理
  2. #export HTTPS_PROXY=$ip:$port
  3. curl -s https://pyenv.run | bash

3)添加初始化命令,根据自己使用的 Shell 编辑相应的 profile 文件(如 .bash_profile),添加以下代码

  1. # pyenv
  2. if [[ -d $HOME/.pyenv ]]; then
  3. export PYENV_ROOT="$HOME/.pyenv"
  4. export PATH="$PYENV_ROOT/bin:$PATH"
  5. eval "$(pyenv init --path)"
  6. eval "$(pyenv init -)"
  7. eval "$(pyenv virtualenv-init -)"
  8. fi

4)重启 SHELL 以使配置生效

  1. exec $SHELL

更新 pyenv

  1. # 处理 Git 版本过低导致无法更新 pyenv 的问题(CentOS 系统需要)
  2. sed -i 's/--no-rebase --ff//' ~/.pyenv/plugins/pyenv-update/bin/pyenv-update{,n}
  3. pyenv update

使用 pyenv

pyenv 命令参考

pyenv 命令帮助参考 https://github.com/pyenv/pyenv/blob/master/COMMANDS.md

  1. pyenv update # 更新 pyenv
  2. pyenv help # 查看帮助
  3. pyenv commands # 列出所有可用命令
  4. pyenv install -l # 列出可用的版本
  5. pyenv install 3.9.5 # 安装指定版本
  6. pyenv uninstall 3.9.5 # 卸载指定版本
  7. # 切换版本,优先级 shell > local > global
  8. pyenv shell 3.9.5 # 当前 Shell 切换到指定版本,取消:pyenv shell --unset
  9. pyenv local 3.9.5 # 当前目录切换到指定版本,取消:pyenv local --unset
  10. pyenv global 3.9.5 # 全局切换到指定版本
  11. pyenv version # 查看当前使用的版本
  12. pyenv versions # 查看所有已安装的版本

使用 pyenv 安装 Python

  1. # 列出可安装的 Python 版本,包括其他发行版
  2. pyenv install -l
  3. # 查看当前使用的版本
  4. pyenv version
  5. # 安装指定的版本(通过源码编译安装,需要一些时间)
  6. pyenv install 3.9.5
  7. # 查看当前系统下可用的版本
  8. pyenv versions
  9. # 全局切换到指定版本
  10. pyenv global 3.9.5
  11. # 或者只在当前目录下切换指定版本
  12. pyenv local 3.9.5
  13. # 查看当前使用的版本
  14. pyenv version
  15. python -V

使用 pyenv virtualenv 创建虚拟环境

  1. # 创建虚拟环境
  2. pyenv virtualenv 3.9.5 learnpython-3.9.5
  3. # 列出已创建的虚拟环境
  4. pyenv virtualenvs
  5. # 激活虚拟环境
  6. pyenv activate learnpython-3.9.5
  7. # 退出虚拟环境
  8. pyenv deactivate learnpython-3.9.5
  9. # 删除虚拟环境
  10. pyenv uninstall learnpython-3.9.5

卸载 pyenv

pyenv 将所有的文件都存放到 $PYENV_ROOT 变量指定的目录下,默认为 ~/.pyenv,只需删除该目录,并将添加到 profile 文件中的配置删除即可,具体参考 Uninstall