js
#!/bin/zsh
echo "🔍 检测系统中所有已安装的 Python 版本...\n"
# 存储结果
declare -a results=()
# 辅助函数:检查单个路径
check_python() {
local path="$1"
if [[ -f "$path" && -x "$path" ]]; then
version=$("$path" --version 2>&1)
if [[ $? -eq 0 ]]; then
# 避免重复
for r in "${results[@]}"; do
if [[ "$r" == *"$path"* ]]; then
return
fi
done
results+=("$version → $path")
fi
fi
}
# === 1. 系统自带 Python ===
check_python "/usr/bin/python3"
for v in /usr/bin/python3.[0-9]*; do
[[ -f "$v" ]] && check_python "$v"
done
# === 2. Python.org 官方安装 ===
if [[ -d "/Library/Frameworks/Python.framework/Versions/" ]]; then
for d in /Library/Frameworks/Python.framework/Versions/*; do
if [[ -d "$d" && "$d" != *.pkg ]]; then
bin_path="$d/bin/python3"
check_python "$bin_path"
fi
done
fi
# === 3. Anaconda / Miniconda ===
[[ -f "$HOME/anaconda3/bin/python3" ]] && check_python "$HOME/anaconda3/bin/python3"
[[ -f "$HOME/miniconda3/bin/python3" ]] && check_python "$HOME/miniconda3/bin/python3"
# === 4. Homebrew (Intel: /usr/local, Apple Silicon: /opt/homebrew) ===
for brew_prefix in /opt/homebrew /usr/local; do
if [[ -d "$brew_prefix/bin" ]]; then
for p in "$brew_prefix"/bin/python3 "$brew_prefix"/bin/python3.[0-9]*; do
[[ -f "$p" ]] && check_python "$p"
done
fi
done
# === 5. pyenv(可选)===
if [[ -d "$HOME/.pyenv/versions" ]]; then
for v in "$HOME"/.pyenv/versions/*; do
if [[ -d "$v" ]]; then
py="$v/bin/python"
[[ -f "$py" ]] && check_python "$py"
fi
done
fi
# === 输出结果 ===
if [[ ${#results} -gt 0 ]]; then
echo "✅ 找到以下 Python 安装:"
# 排序输出(按版本号大致排序)
printf '%s\n' "${results[@]}" | sort -V
else
echo "❌ 未找到任何 Python 安装。"
fi
echo ""
# === 当前默认 python3 ===
echo "📌 当前终端使用的 python3:"
if command -v python3 &>/dev/null; then
current_path=$(which python3)
current_version=$(python3 --version 2>&1)
echo " • $current_version → $current_path"
else
echo " ❌ python3 命令不可用"
fi
执行脚本:
js
sh 路径/check-python.sh