«

»

9月 29

SublimeText3 のプラグインで import するとき

Pocket

ST3のプラグイン開発してて気づいたこと

てな感じに普通に別ファイルにクラス分けしてインポートしたら

と怒られたわけ。
(SublimeTextとか関係なしに)普通にソースコード書いてる時はそんなことなかったのに…

てことで「sublimetext3 plugin importerror: no module named」とかってググると、こんなページを発見。
何てことはない、単にそこにパスが通ってなかったってだけ。
プログラミング初心者(何年やってんねん)ってことで一つ許して。

んで、ST3のAPIリファレンス見つつ、さっきのサイトも参考にすると、

って感じになる。
なんだかかっこ悪いなぁ…できれば一番最初にimportしたいなぁ…
あ、ちなみにこのプラグインがあるディレクトリと同じディレクトリに、目的のクラス入りファイルがある場合ね。

これでめでたしめでたし。

追記
あかn…
実在するファイル以外が active_view な状態でプラグイン起動すると(少なくとも sublime_plugin.WindowCommand プラグインでは)、
self.window.extract_variables()['file_path']

KeyError: 'file_path'
で怒られるZE…まじかYO…

てことで、(プラグインを普通の場所においているなら)
sublime.packages_path()
でプラグイン置き場までのパスが出てくる。
それから、 __name__ディレクトリ名.モジュール名が来る(?)ので

とすればよい(ホントかよ…)
os.path.join() はパスを連結してくれる奴。
まぁ単に’/’でつなげるだけなんだけどね。

ちなみに、 __name__についてもあまりよく理解してないし、ついでになんで’file_path’キーが無いって怒られたかもわからない。
勉強が足りないなぁ…

さらに追記
os.sys.path['file_path']でみると、プラグイン置き場(つまり、Packages ディレクトリ)まではパスが通っている。
つまり、単に

でええんやね。
ちなみに PackageNameはパッケージ(プラグイン)の名前な。
ほんますまへん。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">