web-dev-qa-db-ja.com

Sublime Text2内からインタラクティブにPython

私はこのフォーラムですべての答えを見てきましたが、何かが足りません。叩けるようになりたい Cmd+B Sublime Text2のPythonファイル "myfile.py"の編集中。

これにより、ファイルをロードしてインタラクティブプロンプトに戻るPythonシェルが開き、Pythonスクリプトの名前空間が使用可能になります。

ビルド設定で-iオプションを設定しても、インタープリターは閉じます(以下を参照)

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

ダウンロードしましたsublimeREPLですが、-iオプションの設定方法がわかりません。
どんな助けでも大歓迎です

14
user1936097

わかりました、ヒントをくれたsneawoに感謝します!これが私の最初のカットです。

手順1.コマンド「pydev」を作成するプラグイン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. [設定]-> [キー-バインディング-ユーザー]で新しいキーバインディングを作成します

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

今押す f5 (Macでは fn+f5 デフォルトでは)トリックを実行します-replタブでpythonインタープリターを起動し、レイアウトを2ウィンドウ水平に設定し、replタブを下のウィンドウに移動します。

これは、現在のレイアウトが何であるかをチェックせず、単にレイアウトを2水平に設定するという点で非常に基本的です。おそらくコードを整えてチェックを行い、既存のレイアウトに水平ウィンドウを追加するだけです。また、replタブが閉じているときに水平バッファを削除するとよいでしょう。

11
user1936097

ユーザーのキーバインドを更新してみてください。

[
    { "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"
                    } 
    }
]
7
sneawo

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

元の投稿に示されているように、これをキーバインドに割り当てると、標準のPythonの代わりにIPythonが読み込まれます。

0
Danton Noriega

答えはあなたのアプローチよりもはるかに簡単です。新しいビルド「プロファイル」(ビルドシステム)を定義するだけで、オプション_-u_を_-ui_に変更することを除いて、デフォルトのPythonビルドを正確にキャプチャします。

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

0
Jim Raynor