29.3 pkgutil -- パッケージ拡張ユーティリティ

バージョン 2.3 で 新たに追加 された仕様です。

このモジュールは次の単一の関数を提供します。

extend_path( path, name)
パッケージを構成するモジュールのサーチパスを拡張します。 パッケージの __init__.py で次のように書くことを意図したもので す。

from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

上記はパッケージの __path__sys.path の全ディレクトリ のサブディレクトリとしてパッケージ名と同じ名前を追加します。これは1つ の論理的なパッケージの異なる部品を複数のディレクトリに分けて配布したい ときに役立ちます。

同時に *.pkg* の部分が name 引数に指定された文 字列に一致するファイルの検索もおこないます。この機能は import で始まる特別な行がないことを除き *.pth ファイルに似ています (site の項を参照)。*.pkg は重複のチェックを除き、信 頼できるものとして扱われます。*.pkg ファイルの中に見つかったエ ントリはファイルシステム上に実在するか否かを問わず、そのまますべてパス に追加されます。(このような仕様です。)

入力パスがリストでない場合(フリーズされたパッケージのとき)は何もせずに リターンします。入力パスが変更されていなければ、アイテムを末尾に追加し ただけのコピーを返します。

sys.path はシーケンスであることが前提になっています。 sys.path の要素の内、実在するディレクトリを指す(ユニコードまた は8ビットの)文字列となっていないものは無視されます。ファイル名として使っ たときにエラーが発生する sys.path のユニコード要素がある場合、 この関数(os.path.isdir() を実行している行)で例外が発生する 可能性があります。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。