Running Python interactively from within Sublime Text 2

前端 未结 5 1553
情歌与酒
情歌与酒 2020-12-05 05:54

I have looked at all the answers on this forum but I\'m missing something. I want to be able to hit Cmd+B while editing a Python file \"myfile.py\" in

5条回答
  •  执笔经年
    2020-12-05 06:22

    I wanted to add a quick edit to the answer by @user1936097.

    I copied the idea but wanted to instead load IPython (the code as is works fine to load standard Python). I replaced...

    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"
                                                 })
    

    with...

    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"}
                        })
    

    But it didn't work.

    The line "autocomplete_server": true seemed to be the problem. If I removed it, the code ran, but IPython opened the closed. If I left it, nothing happened.

    I finally borrowed a command found in the file /SublimeREPL/config/Python/Default.sublime-commands and came up with...

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

    This made the final plugin code:

    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 })
    

    Assign this to a keybind as shown in the original post and you will now load IPython instead of standard Python!

提交回复
热议问题