# 3.22 `pkgutil` -- パッケージ拡張ユーティリティ

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

警告: これは実験的なモジュールです。将来廃止されたり、Python 2.3 beta 1 の バージョンとはまったく別のものに書き変えられる可能性があります。

警告: これは実験的なモジュールです。将来廃止されたり、Python 2.3 beta 1 の バージョンとはまったく別のものに書き変えられる可能性があります。

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

`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()` を実行している行)で例外が発生する 可能性があります。