sublime text 不自动继承终端激活的 python 虚拟环境变量,需手动在构建系统中指定虚拟环境的 python 可执行路径及 scripts/bin 目录到 path 字段,并使用 -u 参数避免输出缓冲;推荐通过 .sublime-project 文件按项目配置,确保路径正确、json 语法合法。

Sublime 里 Python 虚拟环境的环境变量从不自动继承
Sublime Text 启动时读取的是系统或用户级 PATH,完全不感知你在终端里 source venv/bin/activate 或 conda activate myenv 的动作。所以即使虚拟环境里装了 requests 或 django,直接 Ctrl+B 运行脚本仍会报 ModuleNotFoundError——这不是包没装,是 Sublime 根本没用那个环境的 python。
必须手动指定虚拟环境的 python 可执行文件路径
关键不是“激活”,而是让 Sublime 明确知道该调哪个 python。这分两步:找对路径、填进构建系统。
一款AI工具,主要用于一款基于 Rust 的快速无头浏览器自动化命令行工具(CLI),支持 Node.js 回退机制,可使 AI agent 通过结构化命令实现页面导航、点击、输入及截图,适合需要提升相关任务效率的用户。
- Windows:先打开命令行,
cd到项目根目录,运行venv\Scripts\python.exe -c "import sys; print(sys.executable)";或用where python(确保当前已venv\Scripts\activate.bat) - macOS/Linux:在项目根目录下运行
source venv/bin/activate && which python;Conda 用户必须用conda activate myenv && which python,别信conda which python - 路径中含空格(如
C:\Program Files\myproject\venv\Scripts\python.exe)时,Windows 下推荐改用正斜杠:C:/Program Files/myproject/venv/Scripts/python.exe
构建系统里只写 cmd 不够,path 字段才是 import 成功的关键
很多教程只改 "cmd",结果还是报错。因为 pip、setuptools 和你装的第三方包都在虚拟环境的 Scripts(Windows)或 bin(macOS/Linux)目录里,而 Sublime 默认不把该目录加进子进程的 PATH。
- Windows 示例(注意
path指向Scripts目录,不是python.exe所在路径):{ "path": "C:/myproject/venv/Scripts", "cmd": ["C:/myproject/venv/Scripts/python.exe", "-u", "$file"], "file_regex": "^[ ]*File \"(*?)\", line ([0-9]*)", "selector": "source.python" } - macOS/Linux 示例:
{ "path": "/Users/you/myproject/venv/bin", "cmd": ["/Users/you/myproject/venv/bin/python", "-u", "$file"], "file_regex": "^[ ]*File \"(*?)\", line ([0-9]*)", "selector": "source.python" } -
-u参数不能省:否则print()输出延迟,input()直接卡死——这不是代码问题,是 Sublime 构建面板无 TTY 导致的缓冲行为
项目级环境变量要用 .sublime-project 绑定,别堆在全局 Build System 里
把不同项目的构建系统全塞进 Packages/User/ 目录,很快就会选错、改串、互相覆盖。正确做法是每个项目配一个独立的 .sublime-project 文件。
- 菜单栏选
Project → Save Project As…,存为myproject.sublime-project - 编辑该文件,在
"settings"下加:"build_systems": [ { "name": "Python-venv", "cmd": ["./venv/bin/python", "-u", "$file"], "path": "./venv/bin" } ] - 路径用相对写法(如
./venv/bin)更安全,前提是 Sublime 是以项目根目录为工作区打开的(即通过File → Open Folder…) - 这样每次打开该项目,Sublime 自动加载对应解释器;换项目,环境自动切换,不会手误
cmd 数组里的每一项都必须是可执行文件的绝对路径,python、conda run、source activate 全无效;且 .sublime-build 文件一旦保存失败(比如 JSON 末尾多了个逗号、用了中文引号),Tools → Build System 菜单里就根本不会出现它——连报错提示都没有。










