跳转至

Simple Python Version Management: pyenv

pyenv是什么?

  • pyenv 可让您轻松地在多个 Python 版本之间切换。

  • 推荐使用:pyenv 管理版本 + poetry 管理依赖

pyenv安装

Bash
# 安装环境依赖以供pyenv编译安装python时使用
$ brew install openssl readline sqlite3 xz zlib tcl-tk

# 安装pyenv
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

# 为 Pyenv 设置 shell 环境
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

# 重新加载 Shell 配置文件并将更改应用于当前会话
$ exec "$SHELL"

# 查看pyenv版本
$ pyenv -v

了解pyenv的Python版本选择逻辑

当您执行 shim 时,pyenv 通过按以下顺序从以下源读取来确定要使用的 Python 版本:

  1. 环境PYENV_VERSION变量(如果指定)。您可以使用该pyenv shell命令在当前 shell 会话中设置此环境变量。
  2. .python-version当前目录中的应用程序特定文件(如果存在)。.python-version您可以使用命令修改当前目录的 文件pyenv local
  3. 通过搜索每个父目录找到的第一个.python-version文件(如果有),直到到达文件系统的根目录。
  4. 全局$(pyenv root)/version文件。您可以使用pyenv global命令修改此文件。

常用命令

基本使用

Bash
# 查看 pyenv 的版本
$ pyenv -v
# 查看当前使用版本
$ pyenv version
# 罗列当前已安装的所有 python 环境,如果是当前正在使用的环境,则前面会有个 *
$ pyenv versions
# 查看帮助
$ pyenv help
# 如果输入 pyenv 之后使用 tab 不补全,可以使用该命令进行初始即可使用补全命令
$ pyenv init

安装Python

Bash
1
2
3
4
5
6
7
8
9
# 列出所有可安装的Python 版本
$ pyenv install -l

# 安装CPython 3.9.17
# pyenv 会尽力下载并编译想要的 Python 版本
$ pyenv install 3.9.17

# 安装 CPython 3.9.17 并为编译过程传递优化参数以获得最佳性能
$ env PYTHON_CONFIGURE_OPTS='--enable-optimizations --with-lto' PYTHON_CFLAGS='-march=native -mtune=native' pyenv install 3.9.17

Python 版本之间切换

Bash
1
2
3
4
5
6
# 仅选择当前 shell 会话,临时生效,优先级高于 global
$ pyenv shell <version>
# 会在当前目录创建 .python-version 文件,并记录设置的 python 环境,每次进入该目录会自动设置成该 python 环境
$ pyenv local <version>
# 为您的用户帐户全局选择,重启不会造成再次更改
$ pyenv global <version>

卸载Python 版本

Bash
$ pyenv uninstall <versions>

卸载

Bash
$ rm -rf ~/.pyenv

别忘了还要在~/.bash_profile中删除相关配置即可。

最后说明

我们不要安装pyenv-virtualenv,而是应该使用Poetry进行虚拟环境的管理,这样可以做到思路清晰,而Poetry的虚拟环境更加的方便好用。

再次强调:有了 Poetry,就不要再装pyenv-virtualenv了。

参考

https://github.com/pyenv/pyenv

https://github.com/pyenv/pyenv/wiki

https://github.com/pyenv/pyenv/wiki/Plugins


最后更新: July 18, 2023
创建日期: July 18, 2023