Mac下如何在同一IDLE Shell重复运行Sublime编写的Python脚本
复用IDLE Shell窗口运行Sublime Text中的Python脚本
问题现状
当前使用的Sublime Text Build配置可在IDLE Shell中运行Python脚本,但每次运行都会关闭并重启Shell窗口,无法实现IDLE自带编辑器那样复用已有窗口的效果。
解决方案(Mac系统)
IDLE本身未提供直接复用Shell窗口的命令行参数,可借助AppleScript实现窗口检测与复用逻辑:
1. 编写AppleScript脚本
创建名为run_idle_reuse.scpt的脚本,内容如下:
on run {filePath} tell application "System Events" set idleProcess to application process "IDLE" if exists idleProcess then set idleWindows to windows of idleProcess if (count of idleWindows) > 0 then tell application "IDLE" activate tell application "System Events" -- 向IDLE Shell输入内置命令执行脚本 keystroke "runfile('" & POSIX path of filePath & "')" & return end tell end tell return end if end if -- 无IDLE窗口时启动新Shell并运行脚本 do shell script "/Library/Frameworks/Python.framework/Versions/3.8/bin/idle3 -r " & quoted form of POSIX path of filePath end tell end run
2. 修改Sublime Text Build配置
替换原有Build配置为以下内容,注意将/path/to/run_idle_reuse.scpt改为你实际保存脚本的路径:
{ "cmd": ["osascript", "/path/to/run_idle_reuse.scpt", "$file"], "file_regex": "^\\s*File \"(...*?)\", line ([0-9]*)", "selector": "source.python", "env": {"PYTHONIOENCODING": "utf-8"} }
3. 配置系统权限
在Mac系统偏好设置的安全性与隐私 > 隐私 > 辅助功能中,添加Sublime Text,允许其控制电脑,否则AppleScript无法模拟输入操作。
原理说明
- AppleScript先检测是否存在IDLE进程及窗口,若存在则激活窗口并向Shell输入IDLE内置的
runfile()命令运行脚本 - 无IDLE窗口时,才会启动新的IDLE Shell并执行脚本
内容的提问来源于stack exchange,提问作者Alfie Stoppani
相关产品推荐
相关产品推荐

