必须手动写死虚拟环境里python的绝对路径,sublime不自动识别venv或pipenv;需先在终端激活环境后用which python或where python获取路径,填入build system的cmd字段,并加-u参数、设working_dir和encoding确保正常运行。

Sublime 的 Build System 怎么指定虚拟环境里的 python
必须手动写死虚拟环境里 python 的绝对路径,Sublime 不会自动识别 venv 或 pipenv 环境。它不读 pyvenv.cfg,也不看当前终端是否已激活环境。
实操建议:
- 先在终端激活你的虚拟环境:
source venv/bin/activate(macOS/Linux)或venvScriptsctivate.bat(Windows) - 再运行
which python(macOS/Linux)或where python(Windows),复制输出的完整路径 - 新建 Build System 时,
"cmd"字段填这个路径,例如:["/Users/me/project/venv/bin/python", "-u", "$file"] - Windows 用户注意:路径中用正斜杠
/或双反斜杠\,单反斜杠会导致 JSON 解析失败
为什么 import 自己装的包还是报 ModuleNotFoundError
Build System 只换了解释器,没改工作目录和 sys.path。如果你的项目结构含子目录(如 src/main.py),而 requirements.txt 安装的是项目根目录下的可安装包,那默认运行时找不到。
实操建议:
- 在
.sublime-build文件里加"working_dir": "$project_path",强制以项目根为工作目录 - 如果没开项目(即没打开 .sublime-project),可用
"working_dir": "/absolute/path/to/your/project" - 临时验证:在 Python 文件开头加
import sys; print(sys.executable, sys.path),确认路径是否包含你期望的包位置 - 别依赖
pip install -e .后自动生效——Sublime 不读setup.py或pyproject.toml
Sublime 能不能像 VS Code 那样自动切换虚拟环境
不能。VS Code 有 Python 扩展主动扫描 .venv、venv、env 目录并提示选择;Sublime 没这个能力,所有环境绑定都是静态、手动、路径硬编码的。
这意味着:
- 每个项目需单独建一个
.sublime-build文件,不能复用 - 换环境就得改 JSON 里的路径,保存后重新选 Build System
-
SublimeREPL和LSP-python插件各自维护一套解释器配置,改了 Build System 不等于 REPL 也跟着换 - 没有“当前项目自动匹配同名 venv”机制,哪怕你把虚拟环境就放在项目根下叫
venv,Sublime 也视而不见
中文输出乱码或 input() 卡住怎么办
根本原因是没加 -u 参数 + 编码未显式声明,导致 stdout/stdin 缓冲行为异常,尤其在 Windows 上更明显。
实操建议:
-
"cmd"数组里必须带"-u",顺序无关,但缺一不可:["/path/to/python", "-u", "$file"] - 加上
"encoding": "utf-8",避免中文 print 报[Decode error - output not utf-8] - Windows 用户若仍乱码,可额外加
"env": {"PYTHONIOENCODING": "utf-8"} - 不要改系统默认的
Python.sublime-build,新建专用文件(如Python-venv.sublime-build),避免和其他项目冲突
最易被忽略的一点:路径写对了、-u 加了、working_dir 也设了,但忘了在 Sublime 里真正选中这个新构建系统——Tools → Build System 菜单里勾选的是不是你刚保存的那个名字?没勾选就等于没配。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











