管理众多Python版本的神器:Pyenv

2024年 1月 22日 61.1k 0

译者 | 布加迪

审校 | 重楼

想要在不破坏开发环境的情况下,在上午尝试最新Python版本的新特性,在午休时间浏览遗留的Python代码库吗?Pyenv可以帮这个忙。使用Pyenv,您可以安装Python版本,在不同版本之间切换,并删除不再需要的版本。

本教程介绍了Pyenv的安装和使用。

安装Pyenv

第一步是安装Pyenv。我用的是Linux:Ubuntu 23.01。如果您使用Linux系统,安装Pyenv的最简单方法是运行以下curl命令:

$ curl https://pyenv.run | bash

这将使用pyenv-installer安装Pyenv。

安装完成后,系统提示您完成shell环境的设置以使用Pyenv。为此,可以将以下命令添加到~/.bashrc文件:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc

echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc

echo 'eval "$(pyenv init -)"' >> ~/.bashrc

您已准备好开始使用Pyenv了!

注意:如果您使用Mac或Windows系统,查看有关如何安装Pyenv的详细说明:https://github.com/pyenv/pyenv#installation。在Windows上,您需要在Windows Subsystem for Linux(WSL)中安装Pyenv。

使用Pyenv安装Python版本

您已经安装了Pyenv,可以通过运行pyenv install命令来安装特定的Python版本,就像这样:

$ pyenv install version

执行以下命令,查看已安装的Python版本列表:

$ pyenv versions
* system (set by /home/balapriya/.pyenv/version)

我还没有安装任何新版本,所以Python的唯一版本是系统版本,这里是Python 3.11:

$ python3 -version
Python 3.11.4

不妨尝试安装Python 3.8和3.12。试着运行这个命令来安装Python 3.8:

$ pyenv install 3.8

第一次尝试使用Pyenv安装特定版本的Python时,可能会遇到错误,这是由于缺少一些构建依赖项。不用担心,这很容易解决!

一些故障排除提示

尝试使用pyenv install命令在我的Linux发行版上安装Pyenv时,由于缺少构建依赖项,我遇到了错误。

这个StackOverflow帖子包含有关为Pyenv安装所需构建依赖项的有用信息。运行以下命令以安装丢失的依赖项:

$ apt-get install build-essential zlib1g-dev libffi-dev libssl-dev libbz2-dev libreadline-dev libsqlite3-dev liblzma-dev

现在,您应该能够安装Python版本,不会出现任何错误:

$ pyenv install 3.8

注意:当您安装Python 3时,默认安装最新的版本。但是您也可以指定3.x,用于安装特定的Python版本。还可以运行pyenv install --list来列出所有可以安装的Python版本,不过版本很多。

同样,运行pyenv install以安装Python 3.12:

$ pyenv install 3.12

现在如果您运行pyenv versions,除了系统版本外,还会看到Python 3.8和3.12:

$ pyenv versions
* system (set by /home/balapriya/.pyenv/version)
3.8.18
3.12.0

设置Python全局版本

使用Pyenv,您可以设置全局Python版本。顾名思义,全局版本是您在命令行使用Python时所使用的Python版本。

但请注意将其设置为比较新的版本,以免在运行使用较新Python版本的项目时出现错误。

比如说,不妨看看如果将全局版本设置为Python 3.8.18会发生什么。

$ pyenv global 3.8.18

创建一个项目文件夹。在其中,用以下代码创建一个main.py文件:

# main.py

def handle_status_code(status_code):
 match status_code:
 case 200:
 print(f"Success! Status code: {status_code}")
 case 404:
 print(f"Not Found! Status code: {status_code}")
 case 500:
 print(f"Server Error! Status code: {status_code}")
 case _:
 print(f"Unhandled status code: {status_code}")

status_code = 404 # oversimplification, yes. handle_status_code(status_code)

如您所见,这段代码使用了Python 3.10中引入的match-case语句。因此,需要Python 3.10或更高版本才能成功运行此代码。如果您试着运行脚本,会得到以下错误:

File "main.py", line 2
 match status_code:
  ^
SyntaxError: invalid syntax

在本文例子中,系统Python是3.11版本,比较新。所以我可以将全局版本设置为系统Python版本,如下所示:

$ pyenv global system

当您现在运行同一个脚本时,应该会得到以下输出:

Output >>>
Not Found! Status code: 404

如果您的系统Python是旧版本,比如Python 3.6或更早版本,安装更新版的Python并将其设置为全局版本将大有帮助。

为项目设置本地Python版本

当您想要处理使用早期Python版本的项目时,希望安装该版本以避免任何错误(比如不再支持的方法调用)。

假设您在处理项目A时想使用Python 3.8,处理项目B时想使用Python 3.10或更高版本,在这种情况下,就可以在项目A的目录中设置本地Python版本,如下所示:

$ pyenv local 3.8.18

您可以运行python --version来检查项目目录中的Python版本:

$ python --version
Python 3.8.18

这在处理较旧的Python代码库时特别有用。

卸载Python版本

如果不再需要Python版本,可以通过运行pyenv uninstall命令卸载它。假设不再需要Python 3.8.18,那么可以通过运行以下命令来卸载它:

$ pyenv uninstall 3.8.18

您应该在终端会看到类似的输出:

pyenv: remove /home/balapriya/.pyenv/versions/3.8.18? [y|N] y
pyenv: 3.8.18 uninstalled

结语

但愿这篇关于Pyenv的入门教程对您有所帮助。总结几个最常见的命令以便快速查询:

命令

功能

pyenv versions

列出目前已安装的所有Python版本

pyenv install –list

列出可以安装的所有Python版本

pyenv install 3.x

安装Python 3.x的最新版

pyenv install 3.x.y

安装Python 3.x的版本y

pyenv global 3.x

将Python 3.x设为全局Python版本

pyenv local 3.x

将您项目的本地Python版本设为3.x

pyenv uninstall 3.x.y

卸载Python 3.x的版本

Docker是一个很好的选择,可以让本地开发变得轻松,不用担心依赖项冲突,但是每当需要处理新项目就使用Docker或其他容器化解决方案可能是大材小用。

因此,我认为能够在命令行中安装、管理和切换Python版本仍然有帮助。您还可以了解pyenv-virtualenv插件以创建和管理虚拟环境。

原文标题:Too Many Python Versions to Manage? Pyenv to the Rescue,作者:Bala Priya C

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论