当前位置: 首页 > 科技观察

如何在Mac上使用pyenv运行多个版本的Python

时间:2023-03-18 15:54:51 科技观察

如果您有一个在macOS上运行的项目需要您尚未安装的Python版本,请尝试pyenv。即使对于经验丰富的开发人员来说,管理本地Python开发环境仍然是一个挑战。尽管制定了详细的包管理策略,但仍需要采取额外的步骤来确保您在需要时运行所需的Python版本。为什么Python版本很重要?起初这是一个奇怪的概念,但编程语言像任何其他软件一样会发生变化。它们有错误、修复和更新,就像您最喜欢的API和任何其他软件一样。同样,不同的版本由称为语义版本的三位数字标识。😭😭😭pic.twitter.com/yt1Z2439W8—DennyPerez(@dennyperez18)2019年5月28日多年来,Python2一直是该语言的主要版本。2020年1月,Python2生命周期结束,之后Python的核心维护者将只支持Python3。Python3正在稳步发展,定期发布新的更新。定期获取这些更新对我来说很重要。最近,我试图在依赖Python3.5.9的macOS上运行一个项目,但我的系统上没有安装它。我以为Python包管理器pip可以安装它,但它没有:$pipinstallpython3.5.9Collectingpython3.5.9ERROR:Couldnotfindaversionthatsatisfytherequirementpython3.5.9(fromversions:none)ERROR:Nomatchingdistributionfoundforpython3.5.9或者,我也可以从官方Python网站下载该版本,但如何让它与我现有的Python版本一起在我的Mac上运行?每次运行都指定一个Python解释器版本(比如python3.7或者python3.5)貌似容易出错。一定会有更好的办法。(注意:我知道这对经验丰富的Python开发人员来说没有意义,但当时对我来说确实如此。我很乐意谈论为什么我仍然认为它应该。)安装和设置pyenv值得庆幸的是,pyenv可以绕过这一系列的并发症。首先,我需要安装pyenv。我可以从源代码克隆和编译它,但我更喜欢通过Homebrew包管理器管理包:$brewinstallpyenv为了通过pyenv使用Python版本,你必须知道shell的PATH变量。PATH确定shell通过命令名称搜索文件的位置。您必须确保shell找到您通过pyenv运行的Python版本,而不是默认安装的版本(通常称为系统版本)。如果不改路径,结果如下:$whichpython/usr/bin/python这是Python的系统版本。要正确设置pyenv,您可以在Bash或zsh中运行以下命令:$PATH=$(pyenvroot)/shims:$PATH现在,如果您检查Python的版本,您将看到它是由pyenv:$whichpython/Users/my_username/.pyenv/shims/python导出语句(PATH=)只会对该shell实例进行更改,要使更改永久化,您需要将其添加到您的点文件中。由于zsh是macOS上的默认shell,因此我将重点介绍它。将相同的语法添加到~/.zshrc文件:$echo'PATH=$(pyenvroot)/shims:$PATH'>>~/.zshrc现在,每次我们在zsh中运行命令时,它都会使用pyenv版本蟒蛇。请注意,我在echo中使用了单引号,因此它不会评估和扩展命令。.zshrc文件仅管理zsh实例,因此请确保检查您的shell并编辑关联的点文件。如果需要再次检查默认shell,可以运行echo$SHELL。如果是zsh,请使用上面的命令。如果您使用Bash,请将~/.zshrc更改为~/.bashrc。如果您想了解更多信息,可以深入了解pyenv的README中的路径设置。使用pyenv管理Python版本现在pyenv可用,我们可以看到它只有系统Python可用:$pyenvversionssystem如上所述,您肯定不想使用这个版本(阅读更多相关信息)。现在pyenv已正确设置,我希望它具有我经常使用的几个不同版本的Python。有一种方法可以通过运行pyenvinstall--list来查看pyenv可访问的所有存储库中的所有Python版本。这是一个很长的列表,将来回顾它可能会有所帮助。目前,我正在选择在Python下载页面上找到的每个最新的“点版本”(3.5.x或3.6.x,其中x是最新的)。所以我将安装3.5.9和3.8.0:$pyenvinstall3.5.9$pyenvinstall3.8.0这需要一段时间,所以休息一下(或阅读上面的链接之一)。有趣的是,输出中显示了该版本Python的下载和构建。例如,输出显示该文件直接来自Python.org。安装完成后,您可以设置默认值。我喜欢最新的,所以将全局默认Python版本设置为最新:$pyenvglobal3.8.0这个版本在我的shell中立即设置。确认:$python-VPython3.8.0我要运行的项目只针对Python3.5,所以我会在本地设置版本并确认:$pyenvlocal3.5.9$python-VPython3.5.9因为我在pyenv使用了local选项,因此它会在当前目录中添加一个文件来跟踪此信息。$cat.python-version3.5.9现在我终于可以为我想要的项目设置一个虚拟环境,并确保我运行的是正确版本的Python。$python-mvenvvenv$source./venv/bin/activate(venv)$whichpython/Users/mbbroberg/Develop/my_project/venv/bin/python要了解更多信息,请参阅我们在Mac上管理虚拟环境的指南教程.总结默认情况下运行多个Python版本可能是一个挑战。我发现pyenv确保我在需要时拥有所需的Python版本。