从Sublime Text 2中以交互方式运行Python

时间:2012-12-29 08:34:05

标签: python sublimetext2 sublimerepl

我已经看过这个论坛上的所有答案,但我遗漏了一些东西。 我希望能够在Sublime Text 2中编辑Python文件“myfile.py”时点击 Cmd + B

这应该打开一个Python shell,它加载我的文件并将我返回到交互式提示符,以便我的Python脚本中的命名空间可用。

在构建设置中设置-i选项仍会关闭解释器(参见下文)

> 81
> >>>  [Finished in 0.1s]

我下载了 sublimeREPL ,但我不确定如何设置-i选项。
任何帮助表示赞赏

5 个答案:

答案 0 :(得分:11)

好的,感谢sneawo提示!这是我第一次做这件事。

步骤1.创建一个插件pydev,(来自Tools-> New Plugin),创建命令'pydev'

import sublime, sublime_plugin

class PydevCommand(sublime_plugin.WindowCommand):
    def run(self):
        self.window.run_command('set_layout', {"cols":[0.0, 1.0], "rows":[0.0, 0.5, 1.0], "cells":[[0, 0, 1, 1], [0, 1, 1, 2]]})
        self.window.run_command('repl_open',{"type": "subprocess",
                                             "encoding": "utf8",
                                             "cmd": ["python2.7", "-i", "-u", "$file"],
                                             "cwd": "$file_path",
                                             "syntax": "Packages/Python/Python.tmLanguage",
                                             "external_id": "python2.7"
                                             })
        self.window.run_command('move_to_group', { "group": 1 }) 

步骤2.在Preferences-> Key-Bindings-user

中创建新的密钥绑定
  

{"keys": ["f5"], "command": "pydev"}

现在按 f5 (在Mac上它默认为 fn + f5 )诀窍 - 它将启动python解释器在repl选项卡中,将布局设置为双窗口水平,并将repl选项卡移动到下窗口。

这是非常基本的,因为它不会检查当前布局是什么,只是将布局设置为2水平。可能会修改代码来进行一些检查,只需在现有布局中添加一个水平窗口即可。当repl选项卡关闭时,最好删除水平缓冲区。

答案 1 :(得分:7)

尝试更新用户键绑定:

[
    { "keys": ["super+shift+r"], "command": "repl_open", 
                 "caption": "Python",
                 "mnemonic": "p",
                 "args": {
                    "type": "subprocess",
                    "encoding": "utf8",
                    "cmd": ["python", "-i", "-u", "$file"],
                    "cwd": "$file_path",
                    "syntax": "Packages/Python/Python.tmLanguage",
                    "external_id": "python"
                    } 
    }
]

答案 2 :(得分:0)

答案比你的方法简单得多。 只需定义一个新版本" profile" (构建系统),除了将选项-u更改为-ui

之外,您将完全捕获默认的Python构建
  

{ "cmd": ["C:\\python33\\python.exe", "-ui", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python" }

答案 3 :(得分:0)

我想通过@ user1936097添加对答案的快速编辑。

我复制了这个想法但是想要加载IPython(代码可以正常加载标准Python)。我换了......

self.window.run_command('repl_open',{"type": "subprocess",
                                             "encoding": "utf8",
                                             "cmd": ["python2.7", "-i", "-u", "$file"],
                                             "cwd": "$file_path",
                                             "syntax": "Packages/Python/Python.tmLanguage",
                                             "external_id": "python2.7"
                                             })

...与

self.window.run_command('repl_open', {
                    "type": "subprocess",
                    "encoding": "utf8",
                    "autocomplete_server": true,
                    "cmd": ["python","-u","${packages}/SublimeREPL/config/Python/ipy_repl.py"],
                    "cwd": "$file_path",
                    "syntax": "Packages/Python/Python.tmLanguage",
                    "external_id": "python",
                    "extend_env": {
                        "PYTHONIOENCODING": "utf-8",
                        "SUBLIMEREPL_EDITOR": "$editor"}
                    })

但它没有用。

线"autocomplete_server": true似乎是个问题。如果我删除它,代码运行,但IPython打开关闭。如果我离开它,什么也没发生。

我终于借用了文件/SublimeREPL/config/Python/Default.sublime-commands中找到的命令并提出了......

self.window.run_command('run_existing_window_command', {
                        "id": "repl_python_ipython",
                        "file": "config/Python/Main.sublime-menu"
                    })

这制作了最终的插件代码:

import sublime, sublime_plugin

class PydevCommand(sublime_plugin.WindowCommand):
    def run(self):
        self.window.run_command('set_layout', {"cols":[0.0, 1.0], "rows":[0.0, 0.5, 1.0], "cells":[[0, 0, 1, 1], [0, 1, 1, 2]]})
        self.window.run_command('run_existing_window_command', {
                        "id": "repl_python_ipython",
                        "file": "config/Python/Main.sublime-menu"
                    })
        self.window.run_command('move_to_group', { "group": 1 })

将其分配给keybind,如原帖中所示,现在您将加载IPython而不是标准Python!

答案 4 :(得分:-1)

这是一种简单的方法,只需创建一个新的构建系统。

{
    "cmd": ["C:\\python33\\python.exe", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

然后将构建系统保存为Python3或Python27并将其选为默认值。