iPythonには、モジュールをオートコンプリートできるという優れた機能があり、これはそこで非常にうまく機能します。
長い間、私は特定のモジュールが配置されている場所にディレクトリを変更できるシェル関数を持っていました。これは、最初の引数からモジュールの名前をインポートして、そのを調べることによって行われます__file__
。
私がやりたいのは、この小さなヘルパーのオートコンプリート関数を記述できるように、利用可能なインポート可能なモジュールを見つけることです。
giveモジュールの場合、次のようなことができdir(module_name)
、そのモジュールに必要なものが得られることはわかっていますが、次のようなことを行うときのiPythonのように、インポートできるものを見つけるために何をすべきかわかりません。
import [TAB]
または
import St[TAB]
これにより、で始まるすべてのインポート可能なモジュールがオートコンプリートされますSt
。
オートコンプリート機能の書き方を知っています。何をインポートできるかを知る方法を見つけることに興味があります。
編集:
IPythonコードを掘り下げて、特定の環境で現在のすべてのモジュールを取得する作業を実行する正確な部分を見つけることができました。
from IPython.core.completerlib import module_completion
for module in module_completion('import '):
print module
結果を印刷する理由は、実際にこれをZSHの完了に使用しているため、出力を処理する必要があるためです。