1 Pyenv

pyenv 是 Python 版本管理工具。 pyenv 可以改变全局的 Python 版本,在系统中安装多个版本的 Python, 设置目录级别的 Python 版本,还能创建和管理 virtual python environments 。所有的设置都是用户级别的操作,不需要 sudo 命令。

image-20230210172630208

安装之前

不同系统请参考 Common build problems,安装必须的工具。

sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev libedit-dev

pyenv 安装

根据官网的 安装说明 或者 自动安装 。如果使用 Mac 直接使用 Homebrew。安装成功后记得在 .bashrc 或者 .bash_profile 中添加三行来开启自动补全。

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

根据自己的环境配置。

官方提供了一键安装脚本,可以直接下载运行(mac / windows

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

如果你没有科学,可以使用加速链接进行下载

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

安装完成后发现提示以下警告

image-20230210173707348

因此按照警告加一下环境变量

  1. 打开 bashrc 文件

image-20230210174037886
  1. 按照提示修改

image-20230210174138350
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"	
  1. 重启终端就生效了

image-20230210174249762

也可以使用以下命令

source ~/.bashrc	

执行安装后提供了如下工具:

  • pyenv: pyenv 工具自身

  • pyenv-virtualenv: pyenv 的插件可以用来管理 vierual environments

  • pyenv-update: 用来更新 pyenv 的插件

  • pyenv-doctor: 验证 pyenv 和依赖是否安装的插件

  • pyenv-which-ext: 用来寻找相同命令的插件

pyenv 会从源代码编译 Python,所以需要安装必须的编译工具,安装 build 工具:

Debian/Ubuntu/Linux Mint:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl

Fedora/CentOS/RHEL:

sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite \
sqlite-devel openssl-devel xz xz-devel libffi-devel

MacOS:

brew install openssl readline sqlite3 xz zlib

pyenv 常用命令

使用 pyenv commands 显示所有可用命令

python 安装与卸载

就如上文所说,pyenv 从源码安装 Python, 每一个安装的版本都会在 pyenv 根目录的 versions 目录下。

pyenv install 2.7.3   # 安装 python

安装后可以检视:

ls ~/.pyenv/versions/

从本机卸载对应版本的 Python 也特别简单:

pyenv uninstall 2.7.3 # 卸载 python

或者直接删除掉 ~/.pyenv/versions/2.7.3 对应的目录也可以。

rm -rf ~/.pyenv/versions/2.7.3

查看本机安装 Python 版本

使用如下命令查看本机安装版本

pyenv versions

星号表示当前正在使用的 Python 版本。使用 python -V 确认版本。

查看可安装 Python 版本

使用如下命令查看可安装版本

pyenv install -l

Python 切换

用这些命令可以切换全局或者项目中的 Python 版本:

pyenv global 2.7.3  # 设置全局的 Python 版本,通过将版本号写入 ~/.pyenv/version 文件的方式。
pyenv local 2.7.3 # 设置 Python 本地版本,通过将版本号写入当前目录下的 .python-version 文件的方式。通过这种方式设置的 Python 版本优先级较 global 高。

需同在寻找 python 的时候优先级

shell > local > global

pyenv 会从当前目录开始向上逐级查找 .python-version 文件,直到根目录为止。若找不到,就用 global 版本。

pyenv shell 2.7.3 # 设置面向 shell 的 Python 版本,通过设置当前 shell 的 PYENV_VERSION 环境变量的方式。这个版本的优先级比 local 和 global 都要高。`--unset` 参数可以用于取消当前 shell 设定的版本。

pyenv shell --unset

pyenv rehash  # 创建垫片路径(为所有已安装的可执行文件创建 shims,如:~/.pyenv/versions/*/bin/*,因此,每当你增删了 Python 版本或带有可执行文件的包(如 pip)以后,都应该执行一次本命令)

最后更新于

这有帮助吗?