Sublime Text 2 и интерактивная сессия Macports Python 2.7

Я пытался запустить python в интерактивном режиме из возвышенного текста 2.

Я попробовал то, что было предложено в этой теме: Интерактивный запуск Python из Sublime Текст 2

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

и используя привязку ключа:

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

Тем не менее, это работает, но дает мне ошибку, так как я не могу получить доступ к своим модулям Python.

Это сборка, которую я запускаю, и она работает нормально, однако она всегда закрывается, прежде чем я смогу использовать интерактивный режим.

{
    "cmd": ["python", "-ui", "$file"],
    "path": "/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

Заранее спасибо за прочтение этого!


person Chris Fuller    schedule 16.01.2014    source источник


Ответы (2)


Скорее всего, python2.7 сопоставляется с собственной установкой Python для OSX от Apple, а не с Macports.

Попробуйте изменить его на:

    "cmd": ["/opt/local/bin/python2.7", "-ui", "$file"],
person Mikko Ohtamaa    schedule 20.01.2014

Попробуйте следующее.

Заменять

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('run_existing_window_command', {
                        "id": "repl_python",
                        "file": "config/Python/Main.sublime-menu"
                    })

Я позаимствовал команды из файла /SublimeREPL/config/Python/Default.sublime-commands. Я лично использую IPython, поэтому использую опцию "id" : "repl_python_ipython".

Во всяком случае, окончательный плагин должен выглядеть так...

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",
                        "file": "config/Python/Main.sublime-menu"
                    })
        self.window.run_command('move_to_group', { "group": 1 })

Посмотрите, работает ли это.

person Danton Noriega    schedule 23.12.2014