快速修复
# 一键:装 python-is-python3,让 python 指向 python3(官方包,无副作用)
sudo apt update && sudo apt install -y python-is-python3 && python --version
你会遇到什么
在 Ubuntu/Debian(含 WSL)里执行 python --version 报 Command 'python' not found,你以为是 Python 没装,去搜教程重装,结果 python3 --version 明明正常——问题不是没装 Python,而是系统里根本没有 python 这个命令。
老教程、Windows 习惯写死的 python 一跑就挂。
本文路径:快速修复(30 秒一段命令)→ 一步步排查(可跳读)→ 原理与变体(症状/原因/证据)。赶时间直接跳到「快速修复」。
为什么会这样
Ubuntu 18.04 起不再提供 python 命令(只装 python3),这是官方设计:刻意避免 python2/python3 混淆,防止脚本拿到错误的解释器。但大量老教程、CI 配置和 Windows 用户习惯仍写 python,于是"命令找不到"成了国内新手最常撞的墙之一。
- 直接执行
python走的是系统 PATH 查找,Ubuntu 没装python-is-python3就没有这个入口。 python3存在 ≠python存在,两者是独立的命令名。
实测环境:WSL Ubuntu,2026-08-29,Python 3.14.4。
python 与 python3 是两个独立的命令名,PATH 查找只认名字不认「同义」:Ubuntu 18.04 起发行版刻意不提供 python 入口,避免脚本拿到错误版本的解释器(python2 时代的历史教训)——没有 python-is-python3 这个包时,系统里根本没有名为 python 的可执行文件,shell 报 command not found 而不是「版本不对」。
确定性推论:报错在 Ubuntu/WSL 上先 which python3 确认解释器在,再决定——脚本/CI 里把 python 改成 python3(正解,符合发行版设计),或 sudo apt install python-is-python3(提供 python → python3 的符号链接,兼容老脚本);
别用 alias(alias 不进非交互 shell,CI 里不生效);判断路径固定:command -v python 无输出 = 入口不存在,不是坏了。
一步步来
1. 先确认是不是这个问题 — 必做
command -v python; echo "exit=$?"
python3 --version
command -v python 无输出、而 python3 --version 正常 → 就是这个问题(实测一致)。
2. 装 python-is-python3(推荐) — 必做
sudo apt update && sudo apt install -y python-is-python3
这是 Ubuntu 官方包,装上后 python 就是 python3 的软链,不影响任何现有环境。
3. 不想装的话,改写法 — 必做
- 脚本/命令里用
python3; - shebang 写
#!/usr/bin/env python3(兼容性最好,不要依赖python); - 或当前 shell 临时
alias python=python3(只对本 shell 生效)。
venv 场景不用管:进入 venv 后 python 本来就正常,问题只出现在系统解释器。怎么确认修好了
python --version
能正常输出版本号(如 Python 3.14.4)即成功。实测:修复前 python --version 报 not found(exit=127),python3 --version → Python 3.14.4。
其它环境的表现
| 环境 | 说明 |
|---|---|
| Ubuntu/Debian 18.04+ | 无 python 命令,装 python-is-python3 补齐 |
| WSL Ubuntu | 同上;Windows 侧习惯 python 的注意这是 Linux 侧行为 |
| venv 虚拟环境 | venv 自带 python,无需处理 |
| macOS | 自带 python3,python 视 Xcode CLT 版本而定,同样建议写 python3 |
症状
在 Ubuntu/Debian 系(含 WSL)里执行 python 直接失败:
$ python --version
Command 'python' not found, did you mean:
command 'python3' from deb python3
command 'python' from deb python-is-python3
python3明明可用(python3 --version正常)。- 脚本/教程里写死
python(老教程、Windows 习惯)→ 一跑就挂。
原因
- Ubuntu 18.04+ 起不再提供
python命令(只装python3),刻意避免 python2/python3 混淆——这是官方设计,不是装坏了。 - 大量老教程、脚本、CI 配置仍写
python;Windows 用户习惯python也指 python3。
解法
- 临时/脚本内:把命令改成
python3;或alias python=python3(仅当前 shell)。 - 系统级补上 python 命令(推荐):
sudo apt update && sudo apt install -y python-is-python3
python --version # 现在指向 python3
- 写脚本用
python3或 shebang#!/usr/bin/env python3——兼容性最好,不要依赖python。 - venv 场景:进入 venv 后
python正常(venv 自带);问题只出现在系统解释器。
验证证据
- 本机(WSL Ubuntu,2026-08-29):
- 实测 1:
command -v python→ 无输出,exit=1。 - 实测 2:
python --version→python: command not found,exit=127——与用户报错一致。 - 实测 3:
python3 --version→ Python 3.14.4,exit=0(python3 存在)。 - 实测 4:
python-is-python3未安装(修复命令如实给出,未安装实测)。 - 实测复现日志(2026-08-29)
适用工具 (1)
本问题方案已挂到下列工具的方案页——从工具页也能回到这里,双向可达。
python · 外部工具成套方案 (组合包)
这个问题包含在下列成套安装方案中。
- Agent 开发环境一键初始化 partial
来源与证据
素材来源:https://stackoverflow.com/questions/39885520/why-does-ubuntu-show-python-command-not-found
← 编码代理与终端 问题域 | 问题货架 | 遇到其它问题?去 问题空间 提交求助卡