Sublime Text构建系统必须使用绝对路径调用Python解释器并加-u参数,否则输出缓冲导致print延迟或input卡死;虚拟环境需统一构建系统、Anaconda插件和LSP的解释器路径。

Sublime Text 本身不启动开发环境,它只调用你系统里已装好的解释器或编译器;所谓“启动开发环境”,本质是让 Ctrl+B 能正确执行代码、捕获错误、支持交互输入——这三件事没对齐,就永远卡在“按了没反应”或“输出卡住不显示”。
构建系统必须用绝对路径,不能写 python 或 python3
Sublime 启动时几乎不继承 shell 的 PATH,写 "cmd": ["python3", "-u", "$file"] 在 macOS/Linux 上大概率报 python3: command not found,Windows 上更常见 'python' is not recognized。
- 先在终端确认真实路径:
which python3(macOS/Linux)或where python(Windows),例如得到/opt/homebrew/bin/python3或C:\Users\Alice\AppData\Local\Programs\Python\Python311\python.exe - 把完整路径填进构建系统的
"cmd"字段,如"cmd": ["/opt/homebrew/bin/python3", "-u", "$file"] - Windows 路径含空格(如
Program Files)必须用双引号包裹整个路径,或改用"shell_cmd": "py -3 -u \"$file\""并设"shell": true
必须加 -u 参数,否则 print 和 input 都会出问题
不加 -u 会导致标准输出被缓冲,print("hello") 可能延迟数秒才显示,甚至完全不显示;input() 则直接挂住,光标不动,像卡死一样。
-
-u强制 Python 使用未缓冲的 stdout/stderr,这是 Sublime 构建系统能实时看到输出的唯一可靠方式 - Windows 用户若仍有中文乱码或
input()卡住,可在构建系统中同级添加"env": {"PYTHONIOENCODING": "utf-8"} - 别信“文件编码设为 UTF-8 就行”——那是编辑器层面的事,和解释器启动时的 I/O 编码无关
虚拟环境里的包 import 报错?构建系统和插件得用同一个解释器
你在终端里 pip install requests 成功了,但 Sublime 里 import requests 报 ModuleNotFoundError,说明构建系统调用的 Python 解释器和你装包的环境不是同一个。
- 进你的虚拟环境:
source venv/bin/activate(macOS/Linux)或venv\Scripts\activate.bat(Windows) - 再运行
which python或where python,拿到类似./venv/bin/python的路径 - 把这个路径填进构建系统的
"cmd",同时也要在 Anaconda 插件设置里同步修改python_interpreter字段 - 别指望“激活环境后打开 Sublime”能生效——GUI 启动的 Sublime 完全看不到当前 shell 的环境变量
最容易被忽略的是:构建系统路径、Anaconda 插件配置、LSP Python(如果用了)三者指向的 Python 解释器必须完全一致。差一个字符,import 就可能失败,而错误提示只会冷冰冰地写 ModuleNotFoundError,不告诉你它到底在哪个目录下找的包。

















