Python版本管理

Python 的版本管理是在实践中一定会面对的问题。pyenv 是一个简单的 Python 版本管理程序。使用 pyenv 可以在多个 Python 版本间进行切换。本文主要参考项目文档进行翻译和编写。大概的使用效果如下图所示:

pyenv 可以做什么... 

  • 允许您根据每个用户更改全局 Python 版本。

  • 提供对每个项目 Python 版本的支持。

  • 允许用环境变量覆盖 Python 版本。

  • 一次从多个版本的 Python 中搜索命令。这有助于使用 tox 跨 Python 版本进行测试。

与 pythonbrew 和 pythonz 相比,pyenv 不能做什么...

  • 取决于 Python 本身。 pyenv 是由纯 shell 脚本构成的。 Python 不存在引导问题。

  • 需要加载到 shell 中。相反,pyenv 的接入通过在 PATH 中添加一个目录来工作。

  • 当然,可以创建 viralenv,或者创建 pyenv-viralenv 来自动化这个过程。但管理会比较繁琐,并容易产生混乱。

pyenv 如何工作

在高级别上,pyenv 使用注入到 PATH 中的可执行文件拦截 Python 命令,确定应用程序指定了哪个 Python 版本,并将命令传递到正确的 Python 安装。

理解 pyenv 的 Shims

pyenv 的工作原理是在 PATH 前面插入一个 shims 目录来工作:

$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin

通过一个称为重拼凑的过程,pyenv 在该目录中维护 shims,以匹配每个已安装版本 Python 的命令 ー Python、 pip 等。

Shims 是轻量级的可执行文件,只需将命令传递给 pyenv 即可。因此,安装了 pyenv 之后,当运行 pip 时,操作系统将执行以下操作:

  • 在 PATH 中搜索名为 pip 的可执行文件。

  • 在 PATH 的开头找到名为 pip 的 pyenv shim。

  • 运行名为 pip 的 shim,然后将命令传递给 pyenv。

理解 Python 版本选择

当执行一个 shim 时,pyenv 通过从以下来源读取它来决定使用哪个 Python 版本,顺序如下:

  1. PYENV_VERION 环境变量(如果指定)。您可以使用 pyenv shell 命令在当前 shell 会话中设置这个环境变量。

  2. 当前目录中应用指定的 .python-version 文件(如果存在)。可以使用 pyenv shell 命令修改当前目录的 .python-version 文件。

  3. 通过搜索每个父目录找到第一个 .python-version 文件(如果有的话),直到文件系统的根目录。

  4. 全局 $(pyenv root)/version 文件。可以使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值