バリケンのPython日記 RSSフィード

2008-08-15

[] パッケージ(3)  パッケージ(3) - バリケンのPython日記 を含むブックマーク はてなブックマーク -  パッケージ(3) - バリケンのPython日記  パッケージ(3) - バリケンのPython日記 のブックマークコメント

以前の日記でも出てきたワイルドカードを使ってパッケージのモジュールを読み込む場合、たとえば「from hoge.fuga.foo import *」とするとき、fooがパッケージの場合は注意が必要だよ。

この場合、そのパッケージのディレクトリに設置された「__init__.py」ファイルの中に、__all__変数ワイルドカードインポート指定されたときに読み込むモジュールの名前のリストを書いておく必要があるよ。たとえば__init__.pyに

__all__ = ["bar", "baz", "qux"]

と書いておくと、そのパッケージをワイルドカードを使って読み込んだ場合、bar.py、baz.py、qux.pyの3つのモジュールを読むよ。

あるパッケージ内のモジュール同士であれば、モジュール名の指定はフルパス指定しなくてもインポートすることが出来るよ。たとえばパッケージ fooの中にbar.pyとbaz.pyがある場合、bar.pyがbaz.pyを利用したいときはbar.py内で「import baz」のように指定することができるよ。

これは同じフォルダ内にあるモジュール同士のみ可能で、サブディレクトリや上位ディレクトリにあるモジュールを指定する場合はフルパス指定する必要があるみたいだよ。

トラックバック - http://python.g.hatena.ne.jp/muscovyduck/20080815