Sublime Text配置Terminus后Python构建无法识别同目录存在文件
问题产生根因
核心是运行Python进程的工作目录(cwd)和脚本所在目录不匹配:
- Sublime原生Python构建系统会自动把运行进程的工作目录设置为当前正在执行的脚本的存放路径,因此用相对路径
demofile.txt做判断时,会直接解析到脚本同目录的目标文件,运行结果符合预期。 - 配置Terminus的
terminus_exec执行目标后,Sublime原生构建的自动工作目录逻辑不再生效。Terminus默认会使用Sublime Text启动时的初始目录(通常是用户主目录、Sublime安装目录,或上次打开的项目根目录)作为命令执行的cwd,此时相对路径demofile.txt会被解析到这个默认cwd下,自然找不到实际存在的目标文件。
排查&解决步骤
- 先定位验证差异:修改测试代码,打印两个关键路径做对比,分别用原生构建、Terminus构建运行,就能直观看到cwd的区别:
import os print("进程实际运行目录:", os.getcwd()) print("脚本实际存放目录:", os.path.dirname(os.path.abspath(__file__))) if os.path.exists("demofile.txt"): print("file exists") else: print("file does not exist")
- 直接修正Terminus构建配置:在JSON配置中手动加一行
"working_dir": "$file_dir"——这个是Sublime内置变量,会自动获取当前运行脚本的所在目录,强制把执行cwd切到正确路径。修改后的可用配置:
{ "target": "terminus_exec", "cancel": "terminus_cancel_build", "focus": true, "working_dir": "$file_dir", "shell_cmd": "python3 -OO -u \"$file\"", "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python.3", "windows": { "shell_cmd": "py -3 -OO -u \"$file\"" } }
- 适配项目场景的扩展:如果是在Sublime项目下跑代码,需要统一从项目根目录解析相对路径,可以把
working_dir的值换成"$project_path",匹配项目级的路径使用习惯。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

