sublime text 运行 python 脚本报错“python 不是内部或外部命令”是因为构建系统不读取系统 path,需新建 build system 并配置 python 绝对路径;mac/linux 需用 which python3 获取路径填入 cmd;工作目录应保持默认,避免手动设置 working_dir 导致导入失败;改完后须确认状态栏显示正确构建系统且文件保存在 packages/user/ 目录下、命名规范、json 合法。

Sublime Text 运行 Python 脚本报错 python 不是内部或外部命令
这是 Windows 上最常见的情况:Sublime 默认调用系统环境变量里的 python,但你装的是 python3,或者没把 Python 加进 PATH。
别急着改系统 PATH,Sublime 有更轻量、更可控的解法:
- 打开 Sublime → Tools → Build System → New Build System
- 把默认内容替换成以下配置(注意路径要和你本地一致):
{
"cmd": ["C:/Users/你的用户名/AppData/Local/Programs/Python/Python312/python.exe", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python"
}
关键点:"cmd" 里必须写绝对路径,不能写 python3 或 python —— 因为 Sublime 的构建系统不走 shell,不读取你的终端 PATH。
保存时命名为 Python3.sublime-build,之后在 Tools → Build System 里选它即可。每次新建文件或切换项目都不用重新配。
立即学习“Python免费学习笔记(深入)”;
Mac/Linux 下 python3 找不到,但终端里能运行
这是因为 Sublime 启动时没加载 shell 的环境变量(比如 ~/.zshrc 或 ~/.bash_profile),所以它不知道 python3 在哪。
两个靠谱做法,优先选第一个:
- 用
which python3查到路径(比如/opt/homebrew/bin/python3),直接填进.sublime-build的"cmd"字段 - 如果不想硬编码路径,可以写个 wrapper 脚本,让 Sublime 走 shell 启动(但会慢一点,且某些错误提示不友好)
别信“重启 Sublime 就能读到 zshrc”的说法 —— 它真不读。除非你从终端里执行 subl 启动,否则环境就是干净的空壳。
Build System 里 $file 和 $file_path 混用导致导入失败
Python 脚本里用了 import utils,但在 Sublime 里一运行就报 ModuleNotFoundError?大概率是工作目录不对。
"cmd" 默认在当前文件所在目录执行,但如果你加了 "working_dir": "$file_path",看起来合理,其实多余;而如果误写成 "working_dir": "$project_path",反而会让相对导入崩掉。
- 保持默认行为最稳:删掉
"working_dir"行,让 Sublime 自动用$file_path作为工作目录 - 如果脚本依赖同目录下其他模块,确保没手动覆盖
sys.path,也别在构建命令里加cd类操作 - 调试时可在脚本开头加
import os; print(os.getcwd())确认实际工作路径
为什么改完 Build System 还是运行旧版本 Python
常见原因不是配置没生效,而是 Sublime 缓存了旧的构建定义,或者你根本没切对构建系统。
检查三件事:
- 右下角状态栏是否显示
Python3(而不是Python或Automatic)—— 点击它手动切换 - Build System 文件是否保存在
Packages/User/目录下(Windows:%APPDATA%\Sublime Text\Packages\User\;Mac:~/Library/Application Support/Sublime Text/Packages/User/) - 文件名是不是以
.sublime-build结尾,且 JSON 格式合法(用在线 JSON 校验器扫一眼,少个逗号都会静默失效)
最隐蔽的坑:你改的是 Python.sublime-build,但 Sublime 默认启用的是 Automatic,它会按文件后缀自动匹配,结果还是跑了系统里那个老 python。










