Sublime Text不运行Python,仅调用系统解释器;确认真实路径是前提:macOS/Linux用which python3,Windows用where python,虚拟环境需先激活再查,路径须绝对且含-u参数。

Sublime Text 本身不运行 Python,它只是调用你系统里已装好的解释器;配错路径、漏掉 -u、没处理虚拟环境,Ctrl+B 一按就失败或输出卡住——这不是 Sublime 的问题,而是构建系统没对上真实执行上下文。
怎么确认 Python 解释器的真实路径?
这是所有配置的前提,跳过这步,后面全白搭。
- macOS/Linux:终端运行
which python3,比如输出/opt/homebrew/bin/python3或/usr/bin/python3 - Windows:CMD 或 PowerShell 运行
where python,常见路径如C:UsersAliceAppDataLocalProgramsPythonPython311python.exe - 用虚拟环境时,必须先进环境再查:
source venv/bin/activate(Linux/macOS)或venvScriptsctivate.bat(Windows),再跑which python或where python - 路径含空格(如
Program Files)或中文,务必用正斜杠C:/Python311/python.exe或双反斜杠C:\Python311\python.exe,别直接粘贴资源管理器里的路径
怎么写一个能用的 Python3 构建系统?
默认的 Tools → Build System → Python 是给 Python 2 用的,且不支持 input();必须新建一个,且关键参数不能少。
- 菜单打开 Tools → Build System → New Build System…,粘贴以下内容(以 macOS/Linux 为例):
{
"cmd": ["<code>/opt/homebrew/bin/python3</code>", "-u", "$file"],
"file_regex": "^[ ]*File "(*?)", line ([0-9]*)",
"selector": "source.python",
"encoding": "utf-8"
}
-
-u必须加:强制未缓冲输出,否则print()不显示、input()卡死 -
"cmd"里必须是绝对路径,不能写python3或python—— Sublime 启动时不继承 shell 的 PATH - Windows 用户可改用
py -3启动器(更稳):"cmd": ["py", "-3", "-u", "$file"] - 保存为
Python3.sublime-build,文件必须存进Packages/User/目录(Preferences → Browse Packages 可直达)
为什么 import 包报 ModuleNotFoundError?
不是包没装,而是构建系统用的 Python 解释器和你 pip install 的不是同一个环境。
立即学习“Python免费学习笔记(深入)”;
- 检查当前构建系统指向的路径,是否和你终端里
which python输出的一致 - 用 conda / pyenv / venv 管理环境时,Sublime 不会自动读取激活状态——必须手动把该环境下的
python路径填进构建系统 - 多个项目用不同环境?建议每个项目单独建一个构建文件,比如
Python - myproject.sublime-build,避免混用 - Anaconda 插件补全失效?打开 Preferences → Package Settings → Anaconda → Settings - User,显式填入同一条
python_interpreter路径
中文乱码、input() 卡住、错误定位不准怎么办?
这些问题几乎都指向同一个底层原因:输出缓冲 + 编码缺失 + 终端上下文丢失。
- 确保构建系统里有
-u,并加上"encoding": "utf-8" - Windows 用户建议额外加
"env": {"PYTHONIOENCODING": "utf-8"}(与cmd同级) - 别用
"shell_cmd": "chcp 65001 && python -u "$file""—— 它会让file_regex失效,报错时点不了行号 - 文件本身必须是 UTF-8 无 BOM 编码(右下角状态栏确认),开头加
# -*- coding: utf-8 -*-仅作兼容,不解决根本问题
最常被忽略的其实是「路径一致性」:构建系统里的解释器路径、Anaconda 设置里的 python_interpreter、终端里 which python 的输出,三者必须完全一致;差一个字符,import 就可能失败,补全就可能失灵,连 print 都可能不吐字。



















