MacOS 预装了 Python,但它是 Python 2.7 版,现在已弃用(已被 Python 开发者社区放弃)。

整个 Python 社区现在已经开始使用 Python 3.x(写作本文时的当前版本是 3.9)。 Python 4.x 即将推出,但它将完全向后兼容。

如果你尝试从 MacOS 终端运行 Python,你会看到以下警告:

freecodecamp_-_freecodecamp_MacBook-Pro_-___-_-zsh_-_84-24-1
警告:不推荐使用 Python 2.7。此版本被包含在 macOS 中以与旧版软件兼容。macOS 的未来版本将不包含 Python 2.7。建议你从终端内过渡到使用“python3”。

在 Apple 决定将 Python 3.x 设置为默认值之前,你将不得不自己安装它。

通过一个简单命令运行 Python 3

对于一些读者来说,这个命令可能就足够了。你可以使用此命令运行 Python 3(以 3 结尾)。

python3

如果这就是你的全部目的,别担心,享受愉快的一天,快乐地编码。

但是,如果你想要一个合适的 Python 版本控制系统来跟踪各种版本——并且对你使用的版本进行细粒度的控制——本教程将向你展示如何做到这一点。

Megaman-810x600
顺便说一句,如果你想知道为什么我一直提到 Python 3.x – x 是子版本(或开发人员称之为修正版本),表示 Python 3 的任何版本。

如何在 Mac 上安装 Homebrew

首先你需要安装 Homebrew,一个强大的 Mac 包管理器。

打开你的终端,你可以通过使用 MacOS 聚焦搜索(command + 空格)并输入 “terminal” 来完成此操作。

现在你在命令行中,可以通过运行以下命令来安装最新版本的 Homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

终端将要求超级用户级别的访问权限,你需要输入密码才能运行此命令。这与你登录 Mac 时键入的密码相同,输入它并按回车键。

freecodecamp_-__bin_bash_-c__-__bin_bash_-_sudo_-_bash_-c____bin_bash_012set_-u_012_012abort___-_012__printf___s_n_______012__exit_1_012-_012_012if___-z___-BASH_VERSION_--_____then_012__abort__Bash_is_required_to_interpret_this_script___012
这是我高度自定义的终端的屏幕截图,你的终端可能看起来与此不同

Homebrew 会要求你确认要安装以下内容,你必须按 Enter 键才能继续。

freecodecamp_-__bin_bash_-c__-__bin_bash_-_bash_-c____bin_bash_012set_-u_012_012abort___-_012__printf___s_n_______012__exit_1_012-_012_012if___-z___-BASH_VERSION_--_____then_012__abort__Bash_is_required_to_interpret_this_script___012fi_012_

如何安装 pyenv 来管理你的 Python 版本

现在让我们花点时间安装 PyEnv。这个库将帮助你在不同版本的 Python 之间切换(以防你出于某种原因需要运行 Python 2.x,并且预计 Python 4.0 即将到来)。

运行这个命令:

brew install pyenv
freecodecamp_-_freecodecamp_MacBook-Pro_-___-_-zsh_-_90-24
安装 PyEnv

现在你可以安装 Python 的最新版本。

如何使用 pyenv 安装 Python 或更新 Python 的版本

现在你只需要运行以下命令:

pyenv install 3.9.2 

请注意,你可以将 3.9.2 替换为最新版本的 Python。例如,一旦 Python 4.0.0 出来,你可以运行这个:

pyenv install 4.0.0

pyenv 安装疑难解答

如果你遇到“C 编译器无法创建可执行文件”的错误,那么解决此问题的最简单方法是重新安装 Apple 的 Xcode。

Xcode 是 Apple 创建的工具,其中包含 Python 在 MacOS 上运行时使用的所有 C 库和其他工具。Xcode 的容量高达 11 GB,但你需要安装最新版本。你可能想在睡觉时运行它。

你可以在此处获取最新版本的 Apple Xcode。升级到 MacOS Big Sur 后我必须这样做。一旦我这样做了,以下所有命令都可以正常工作。只需重新运行上面的pyenv install 3.9.2,它现在应该可以工作了。

如何为 pyenv(Bash 或 ZSH)设置 MacOS PATH

首先,你需要更新 Unix 路径,为 PyEnv 与你的系统交互铺平道路。

这是 PATH 在 MacOS(和 Unix)中如何工作的详细解释,摘自 pyenv GitHub 仓库

当你运行 pythonpip 之类的命令时,你的操作系统会搜索目录列表以查找具有该名称的可执行文件。此目录列表位于名为 PATH 的环境变量中,列表中的每个目录用冒号分隔:
/usr/local/bin:/usr/bin:/bin
PATH 中的目录是从左到右搜索的,因此列表开头目录中的匹配可执行文件优先于末尾的另一个目录。在此示例中,将首先搜索 /usr/local/bin 目录,然后是 /usr/bin,然后是 /bin

这是他们对 Shim 是什么的解释。我再次详细引用它们,因为我自己真的无法更好地解释这一点。

pyenv 通过在 PATH 前面插入一个 shims 目录来工作:
$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin
通过被称为 rehashing 的过程,pyenv 在该目录中维护 shims,以匹配每个已安装的 Python 版本(pythonpip 等)中的每个 Python 命令。
shims 是轻量级的可执行文件,将你的命令传递给 pyenv。

以下是在 Bash 中更新 .bash_profile 的方法(默认情况下安装在 MacOS 中):

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile

或者,如果你像我一样安装了 ZSH(或 OhMyZSH),你将需要编辑 .zshrc 文件:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc

然后将 PyEnv Init 添加到你的终端。如果你使用 Bash,请运行此命令(同样,这是 MacOS 的默认设置):

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

如果你使用 ZSH,则运行这个命令:

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.zshrc

现在,运行以下命令以重置终端:

reset

如何将 Python 版本设置为全局默认值(Bash 或 ZSH)

你可以将最新版本的 Python 设置为全局,这意味着它将是你运行 Python 应用程序时,MacOS 使用的默认 Python 版本。

运行这个命令:

pyenv global 3.9.2

同样,你可以使用最新版本替换 3.9.2。

现在你可以通过检查 Python 的全局版本来验证这是否有效:

pyenv versions

你应该会看到以下输出:

freecodecamp_-_freecodecamp_MacBook-Pro_-_-zsh_-_84-24
* 的意思是这个版本现在是全局默认版本

最后一步:关闭终端并重新启动它

重新启动浏览器后,运行 python 命令,你将启动新版本的 Python,而不是旧版本。

freecodecamp_-_python_-_python_-_python_-_119-36
耶!Python 3.9.2 安装好了,没有弃用警告

祝贺你!谢谢阅读本文,祝你编码愉快!

原文:How to Install Python 3 on Mac – Brew Install Update Tutorial,作者:Quincy Larson