Sublime Text运行Python需配置绝对路径构建系统并加-u参数;虚拟环境须用which python获取路径硬编码;补全依赖.jedi配置且解释器路径须与构建系统一致;统一UTF-8编码是关键。

Sublime Text 本身不带任何语言运行时,所谓“配置运行环境”,就是让 Build System 正确调用你本机已装好的 javac/java、python3 或 bash —— 路径错、参数漏、权限或编码没处理好,Ctrl+B 就必然失败。
确认终端能跑,才是硬前提
别跳过这步。Sublime 启动时不继承 shell 的 PATH(尤其 macOS 图形界面、Windows 开始菜单启动),所以它能不能调用命令,和你在终端里能不能调用,是两回事——但必须先保证后者成立。
- macOS/Linux:终端执行
which javac、which python3、which bash,都得有输出;再分别跑javac -version、python3 --version、bash --version确认版本可用 - Windows:CMD 里执行
where javac、where python、where git-bash.exe(不是bash),路径要真实存在;javac -version和python --version必须输出一致版本号 - 改完系统环境变量后,必须彻底退出 Sublime(任务管理器杀进程 / 右键退出),再重开——否则新 PATH 不生效
Build System 必须写绝对路径 + 关键参数
靠 python 或 javac 命令名会失效,因为 Sublime 不读 PATH;不加 -u(Python)或 -encoding UTF-8(Java)会导致中文乱码、input() 卡死、编译报错。
- Python:
"cmd": ["<code>/usr/local/bin/python3", "-u", "$file"] ——-u强制未缓冲输出,$file是当前文件完整路径 - Java:
"cmd": ["<code>/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/bin/javac", "-encoding", "UTF-8", "-d", ".", "$file"] —— 显式指定 JDK 路径比依赖 PATH 更稳,-d .保证 class 输出到当前目录,适配package结构 - Bash(Windows):
"shell_cmd": "C:/Program Files/Git/git-bash.exe --cd=\"$file_path\" -c \"bash '$file_name'\""—— 原生 cmd/powershell 不支持 Bash 语法,必须用 Git Bash;路径含空格必须用正斜杠或双反斜杠
文件保存、语法绑定、构建选择三者缺一不可
Ctrl+B 没反应?90% 是这三个环节断了链。
- 文件必须已保存(
$file是空字符串时命令直接崩) - 右下角语言标识必须匹配
selector:Python 文件要点成Python,Java 文件要点成Java,Shell 脚本要点成Shell-Unix-Generic(别信#!行自动识别) - 菜单栏
Tools → Build System必须手动选中你刚建的Python3.sublime-build或Java.sublime-build,不能是Automatic;改完文件后 Sublime 不热重载,需重启或删Packages/User/.cache/
虚拟环境、中文、输入交互这些坑最隐蔽
它们不报错,但行为异常:import 失败、print 不显示、input() 冻住、中文变问号——问题不在代码,在构建配置是否真正对齐了运行上下文。
- 用虚拟环境?别激活后启动 Sublime,那没用。进环境后执行
which python(macOS/Linux)或where python(Windows),拿到venv/bin/python或venv\Scripts\python.exe路径,硬写进"cmd" - 中文输出乱码?光设文件编码为 UTF-8 不够,Python 构建里必须加
-u,Java 构建里必须加-encoding UTF-8;Windows 终端还需chcp 65001,但 Sublime 构建面板不走这个通道,所以参数不能省 -
input()卡死?只有一种解法:确保-u存在,且构建没用shell_cmd包裹批处理脚本(比如runJava.bat),那种方案在需要标准输入时必然阻塞
最易被忽略的是:Sublime 的构建系统从不“智能推导”你的意图,它只机械执行你写的命令。路径写错一位、少一个引号、参数顺序颠倒、甚至斜杠方向不对(Windows 用反斜杠但 JSON 里得转义),都会导致静默失败或诡异行为。验证方式永远只有一个:把 "cmd" 数组里的内容,原样粘到终端里执行,看是否和 Ctrl+B 效果一致。


















