Linux:SublimeText2でSublimeServerがうまく動かない の変更点
Top / Linux:SublimeText2でSublimeServerがうまく動かない
- 追加された行はこの色です。
- 削除された行はこの色です。
- Linux:SublimeText2でSublimeServerがうまく動かない へ行く。
- Linux:SublimeText2でSublimeServerがうまく動かない の差分を削除
*Linux:SublimeText2でSublimeServerがうまく動かない [#r6f7f90f] Linux(CentOS6.1)でSublimeText2でSublimeServerをインストールしようとしたけど四苦八苦したため、メモメモ Linux(CentOS6.1)でSublimeText2でSublimeServerをインストールしようとしたけどエラーがでて何度やっても失敗し、四苦八苦したためメモメモ ***SublimeServerとは? [#sd819d08] SublimeServerとは、Sublime内でWebServerを起動し、Html等をこの組み込みWebサーバからアクセスして表示できる機能です。 これはかなり便利です! -http://learning.github.io/SublimeServer/ ***まず、PackageControlでインストールできない [#k8500b35] まず、PackageControlでインストール出来ませんでした。他のパッケージはインストール出来たのに。 なので、以下の手順でインストールしました +以下のURLからZIPをダウンロード&br; http://learning.github.io/SublimeServer/ +ダウンロードしたZIPを展開して、Sublimeのメニューの「Preference」→「Browse Packages」で表示されるディレクトリにコピー +Sublimeを再起動 インストールを以上で終了です。 が、SublimeServerはちゃんと動きません。 ※ちゃんとインストールされると、メニューの「Tools」→「SublimeServer」の「Start SublimeServer」が活性化するはずです。 ※この時点で、メニューが活性化していたらインストール正常終了ですw ***動かないところにパッチを当てる [#fbb6e9f9] まず、原因を調べるために、メニューの「View」→「Show Console」でコンソールを開きます。 すると、コンソール中に以下のメッセージが表示されていました。 Reloading plugin /home/xxxxxxxxxx/.config/sublime-text-2/Packages/SublimeServer/SublimeServer.py Traceback (most recent call last): File "./sublime_plugin.py", line 62, in reload_plugin File "./SublimeServer.py", line 7, in <module> import os, sys, sublime, sublime_plugin, threading, webbrowser, posixpath, socket, cgi, shutil, mimetypes, time, io File ".\io.py", line 63, in <module> ImportError: No module named _fileio メッセージを読むに、 >.\io.pyって中の63行目で_fileioってモジュールをインポートしようとしたけど_fileioってのはないよ ってことみたい。 SublimeはPythonで出来ているけど、OSにインストールされているpythonのコンソールで試しに「import io」って打ってみたけど特に問題無し。 つまり、なんかSublime特有の問題みたい。 ネットを調べたけど、何かいまいち的を得ない。 例えばこのissueとか -https://github.com/bgreenlee/sublime-github/issues/55 そこで、パッチを当てることにしました。 問題は、ioモジュールをインポートしているところにありそう。 プラグインのソースを見たところ、ioモジュールの使用箇所は1ヶ所で、214行目でした。 f = io.BytesIO() これは、Pythonのインメモリの bytes バッファを利用したストリームの実装、らしいです。 -http://docs.python.jp/2/library/io.html#id3 ちなみに、これが利用されてる箇所は、SublimeServerでディレクトリ内のファイルリストを表示する場合です。 これを使わずに、というと実体のファイルが必要になるなーとおもいつつ、まあ/tmpを使えばいいかということで、以下のようなパッチを当てました。 ※まあ、基本的にはエディタから右クリックでブラウザに表示するし、ディレクトリのファイルリストを表示する場合に一時ファイルが・/tmpに生成されるくらいならいいっか、と言う割り切りでパッチを作成しています。 パッチは2ヶ所です。 -1ヶ所目 : 6行目付近 : import文からioを削除 # modified 2014/05/18 start #import os, sys, sublime, sublime_plugin, threading, webbrowser, posixpath, socket, cgi, shutil, mimetypes, time, io import os, sys, sublime, sublime_plugin, threading, webbrowser, posixpath, socket, cgi, shutil, mimetypes, time # modified 2014/05/18 start ※元々の行はコメントアウトしてあります。 -2ヶ所目 : 218行目 : BytesIOを使用せず、/tmp/配下にファイルを作成するように変更 # modified 2014/05/18 start #f = io.BytesIO() tmp = time.time() f = open("/tmp/st_sv_" + str(tmp) , 'w+') # modified 2014/05/18 end ※元々の行はコメントアウトしてあります。 このパッチを当てると、LinuxでもSublimeServerが動くようになりました!やったー