Skip to content

解决 macOS "zsh: command not found: python" 错误

背景信息

自 macOS Monterey 12.3 版本开始,Apple 移除了系统自带的 Python 2.7,这导致了所有依赖 python 命令的应用程序和脚本出现 "command not found" 错误。

问题概述

在 macOS Monterey 12.3 及更高版本中,当尝试运行 python 命令时,会出现以下错误:

bash
zsh: command not found: python

这个问题尤其影响以下用户:

  • 使用 Atom IDE 和 atom-python-run 包的用户
  • 依赖 python 命令而不是 python3 的脚本
  • 从官方 Python 网站安装 Python 的用户

解决方案

方法一:创建别名(最简单的方法)

在终端中执行以下命令,将 python 指向 python3

bash
echo "alias python=/usr/bin/python3" >> ~/.zshrc
source ~/.zshrc

验证是否成功:

bash
python --version

路径说明

如果 /usr/bin/python3 不存在,可以使用以下命令找到正确的 Python 3 路径:

bash
which python3

然后使用找到的路径替代 /usr/bin/python3

方法二:使用 Homebrew 安装 Python

  1. 安装 Homebrew(如果尚未安装):

    bash
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. 通过 Homebrew 安装 Python:

    bash
    brew install python
  3. 创建别名(根据实际安装路径):

    bash
    echo "alias python=/opt/homebrew/bin/python3" >> ~/.zshrc
    source ~/.zshrc

方法三:使用 pyenv 管理 Python 版本

对于需要多个 Python 版本的用户,pyenv 是最佳选择:

  1. 安装 pyenv 和依赖:

    bash
    brew install pyenv
    brew install openssl readline sqlite3 xz zlib tcl-tk
  2. 配置 shell 环境:

    bash
    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
    echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
    echo 'eval "$(pyenv init -)"' >> ~/.zshrc
  3. 安装特定 Python 版本:

    bash
    pyenv install 3.10.6
  4. 设置为全局默认版本:

    bash
    pyenv global 3.10.6

方法四:创建符号链接

创建一个从 pythonpython3 的符号链接:

bash
sudo ln -s /usr/bin/python3 /usr/local/bin/python

注意

此方法需要管理员权限,且可能影响系统其他依赖 Python 的组件。

Atom IDE 用户特别说明

如果使用 Atom 和 atom-python-run 包,需要检查包设置:

  1. 打开 Atom 偏好设置
  2. 进入 atom-python-run 包设置
  3. 确保 "Command to run python" 字段设置为 python3 而不是 python

验证解决方案

无论采用哪种方法,都应在终端中验证:

bash
python --version

应该显示已安装的 Python 3 版本号,例如:

Python 3.10.6

常见问题排查

  1. 别名不生效

    • 确保已执行 source ~/.zshrc
    • 检查 .zshrc 文件中是否有其他冲突的别名设置
  2. 路径问题

    bash
    # 检查 Python 3 的实际安装路径
    which python3
    
    # 查看所有 Python 相关可执行文件
    ls -l /usr/bin/python*
    ls -l /usr/local/bin/python*
  3. 重启终端: 更改环境变量后,建议完全关闭并重新打开终端窗口

总结

macOS Monterey 12.3+ 移除了系统自带的 Python 2.7,导致 python 命令不可用。通过创建别名、使用 Homebrew 安装或使用 pyenv 管理版本,可以轻松解决此问题。对于大多数用户,方法一(创建别名)是最简单直接的解决方案。

技术细节

Apple 在 macOS Monterey 12.3 中移除了 /usr/bin/python,这是为了推动开发者迁移到 Python 3。此变更影响了所有依赖系统 Python 的工具和脚本。