sublime text gui启动不继承终端环境变量,需硬编码构建系统中解释器绝对路径并配置项目级.env文件。

Sublime Text 启动时不继承终端激活的环境变量,所以无论你在 shell 里 source venv/bin/activate 还是 conda activate myenv,它都看不到——直接 Ctrl+B 运行脚本报 ModuleNotFoundError,不是包没装,是根本没走那个 Python。
为什么 Sublime 找不到你终端里能用的命令
macOS/Linux 下双击图标或 Spotlight 启动 Sublime,它不读 ~/.zshrc 或 ~/.bash_profile;Windows 上改了系统 Path 但没彻底退出所有 subl.exe 进程,旧进程仍用老 PATH。验证方法:终端里跑 which python 或 which javac,记下路径,再看构建系统里写的是否一致。
Build System 必须硬编码可执行文件绝对路径
别信“自动继承”,shell_cmd 或 cmd 字段里必须写死解释器或编译器的完整路径,否则多 JDK、多 Python 版本时极易错配。
- Python 虚拟环境:用
"cmd": ["/path/to/venv/bin/python", "-u", "$file"](macOS/Linux)或"cmd": ["C:\path\to\venv\Scripts\python.exe", "-u", "$file"](Windows) - Java:用
"shell_cmd": "/usr/lib/jvm/jdk-17.0.1/bin/javac -encoding UTF-8 "$file" && /usr/lib/jvm/jdk-17.0.1/bin/java "$file_base_name"" - Scala:
"shell_cmd": "/usr/local/scala/bin/scalac "$file" 2>&1"——2>&1必加,否则错误不显示行号
项目级环境变量要用 .sublime-project + EnvFile 插件
单靠全局 PATH 无法隔离开发/测试/生产配置,.sublime-project 文件可绑定构建系统和工作目录,配合 EnvFile 插件自动加载 .env 或 .env.development 中的变量。
- 安装
EnvFile后,它会自动检测项目根目录下的.env*文件 -
.sublime-project中显式指定"build_systems"和"settings",避免和全局设置冲突 - 确保 JSON 语法合法:路径用正斜杠或双反斜杠,末尾不加逗号,字符串全用双引号
subl 命令无效?先确认 subl.exe 是否真实存在
Windows 上 subl 报“不是内部或外部命令”,90% 是因为没装官网正版,或绿色版缺失 subl.exe。它只在官方安装包根目录下(如 C:Program FilesSublime Textsubl.exe),便携版通常没有。
- 手动进安装目录搜
subl.exe,没有就重装官网版 - PATH 要加到
C:Program FilesSublime Text这一级,不是子目录 - 改完 PATH 后必须关掉所有 CMD/PowerShell 窗口,新开一个再试
subl --help - macOS/Linux 要把
export PATH="/Applications/Sublime Text.app/Contents/SharedSupport/bin:$PATH"写进~/.zshrc或~/.bash_profile,然后source或重启终端
最容易被忽略的是:Sublime 的 GUI 启动方式和终端启动方式,PATH 完全是两套。哪怕你把所有环境变量配得再完美,只要没用终端启动或没在构建系统里硬编码路径,它就永远找不到你要的那个 python、javac 或 scalac。











