解决 macOS "zsh: command not found: python" 错误
背景信息
自 macOS Monterey 12.3 版本开始,Apple 移除了系统自带的 Python 2.7,这导致了所有依赖 python
命令的应用程序和脚本出现 "command not found" 错误。
问题概述
在 macOS Monterey 12.3 及更高版本中,当尝试运行 python
命令时,会出现以下错误:
zsh: command not found: python
这个问题尤其影响以下用户:
- 使用 Atom IDE 和 atom-python-run 包的用户
- 依赖
python
命令而不是python3
的脚本 - 从官方 Python 网站安装 Python 的用户
解决方案
方法一:创建别名(最简单的方法)
在终端中执行以下命令,将 python
指向 python3
:
echo "alias python=/usr/bin/python3" >> ~/.zshrc
source ~/.zshrc
验证是否成功:
python --version
路径说明
如果 /usr/bin/python3
不存在,可以使用以下命令找到正确的 Python 3 路径:
which python3
然后使用找到的路径替代 /usr/bin/python3
方法二:使用 Homebrew 安装 Python
安装 Homebrew(如果尚未安装):
bash/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
通过 Homebrew 安装 Python:
bashbrew install python
创建别名(根据实际安装路径):
bashecho "alias python=/opt/homebrew/bin/python3" >> ~/.zshrc source ~/.zshrc
方法三:使用 pyenv 管理 Python 版本
对于需要多个 Python 版本的用户,pyenv 是最佳选择:
安装 pyenv 和依赖:
bashbrew install pyenv brew install openssl readline sqlite3 xz zlib tcl-tk
配置 shell 环境:
bashecho 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(pyenv init -)"' >> ~/.zshrc
安装特定 Python 版本:
bashpyenv install 3.10.6
设置为全局默认版本:
bashpyenv global 3.10.6
方法四:创建符号链接
创建一个从 python
到 python3
的符号链接:
sudo ln -s /usr/bin/python3 /usr/local/bin/python
注意
此方法需要管理员权限,且可能影响系统其他依赖 Python 的组件。
Atom IDE 用户特别说明
如果使用 Atom 和 atom-python-run 包,需要检查包设置:
- 打开 Atom 偏好设置
- 进入 atom-python-run 包设置
- 确保 "Command to run python" 字段设置为
python3
而不是python
验证解决方案
无论采用哪种方法,都应在终端中验证:
python --version
应该显示已安装的 Python 3 版本号,例如:
Python 3.10.6
常见问题排查
别名不生效:
- 确保已执行
source ~/.zshrc
- 检查
.zshrc
文件中是否有其他冲突的别名设置
- 确保已执行
路径问题:
bash# 检查 Python 3 的实际安装路径 which python3 # 查看所有 Python 相关可执行文件 ls -l /usr/bin/python* ls -l /usr/local/bin/python*
重启终端: 更改环境变量后,建议完全关闭并重新打开终端窗口
总结
macOS Monterey 12.3+ 移除了系统自带的 Python 2.7,导致 python
命令不可用。通过创建别名、使用 Homebrew 安装或使用 pyenv 管理版本,可以轻松解决此问题。对于大多数用户,方法一(创建别名)是最简单直接的解决方案。
技术细节
Apple 在 macOS Monterey 12.3 中移除了 /usr/bin/python
,这是为了推动开发者迁移到 Python 3。此变更影响了所有依赖系统 Python 的工具和脚本。