自然な言語を目指して

技術・日常をぐだぐだと

iPythonがSublime Text(SublimeREPL)上でうまく動かない問題

普段リリースノートとかあんまり見ないんですけど、iPython 4.0が8月14日にリリースされたそうです。(参考)

新しいバージョンではipython notebookをJupyterとして分割しているらしいですね。

今までのiPython Notebookでも他の言語を実行する事は出来たのですが、Jupyterでは言語に依存せずに使う事が出来るそうですね。あんまりNotebookを使うような環境がなかったのですが、最近あちこちでNotebook熱いと聞くので、今回のリリースを機会にこれから使っていきたいですね。

今回の記事は、使ってみると割りと高性能なエディターなのに、プログラマーガチ勢に「デザイナーさんなの?」とか言わわれちゃうSublimerに向けた記事です。

iPythonがSublime Text(SublimeREPL)上でうまく動かない問題

iPythonのバージョンアップに伴い、SublimeREPLでiPythonが起動できなくなりました。

/Users/admin/.pyenv/versions/2.7.9/lib/python2.7/site-packages/IPython/config.py:13: ShimWarning: The ""IPython.config" package has been deprecated. You should import from traitlets.config instead.
  "You should import from traitlets.config instead.", ShimWarning)
/Users/admin/.pyenv/versions/2.7.9/lib/python2.7/site-packages/IPython/terminal/console.py:13: ShimWarning: The "IPython.terminal.console" package has been deprecated. You should import from jupyter_console instead.
  "You should import from jupyter_console instead.", ShimWarning)
/Users/admin/.pyenv/versions/2.7.9/lib/python2.7/site-packages/IPython/frontend.py:21: ShimWarning: The top-level "frontend" package has been deprecated. All its subpackages have been moved to the top "IPython" level.
  "All its subpackages have been moved to the top `IPython` level.", ShimWarning)
Traceback (most recent call last):
  File "/Users/admin/Library/Application Support/Sublime Text 3/Packages/SublimeREPL/config/Python/ipy_repl.py", line 45, in <module>
    from IPython.frontend.terminal.console.app import ZMQTerminalIPythonApp
ImportError: No module named app

***Repl Closed***

こんな感じのエラー。

ipythonのバージョンアップに伴い、色んなパッケージが変わってしまっていることによるエラーですね。

pip install -U jupyter ipython

一旦jupyterとipythonをinstallしましょう。

Sublime textを一旦起動して、Preference->Browse Packagesを開き、FinderでPackageを見れるようにします。 そこから、SublimeREPL/config/Python/ipy_repl.pyを開きます。

んでもって、こちらのgist をipy_repl.pyにコピペ。

f:id:daguniko:20151028050051p:plain

こんな感じで起動できるようになった。

おまけ

Pyenvを使っている人がSublime Text上でBuildする場合

あんまり気づかなかったけど、Sublime Text上でのBuildがデフォルトのシステムになっていました。 これだとPyenv入れていた場合、エラーが起きてしまう恐れがある。(ライブラリをインストールしたのに、Sublime Text上で実行すると読み込めないとか)

cockscombさん記事を発見。

Preferences.sublime-settingsのbuild_envに環境設定を足しましょう。

Sublime text上のTools->Build System->New Build System...を選択して、

{
    "cmd": ["/Users/ユーザー名/.pyenv/shims/python", "$file"]
    , "selector": "source.python"
    , "file_regex": "file \"(...*?)\", line ([0-9]+)"
}

を追加。

これでSublime text上でPythonプログラムを実行する場合は、Cmd+Shift+Bで一旦Pyenvを選択してから、Cmd+Bで実行できるようになる。

もっと良い解決方法あるかも。

参考資料

ipython shell does not work with sublime repl

理系じゃないけどSublime text3を使う