29.2 zipimport -- Zip アーカイブからモジュールを import する

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

このモジュールは, Python モジュール (*.py*.py[co] やパッケージを ZIP 形式のアーカイブから import できるように します。通常,zipimport を明示的に使う必要はありません; 組み込みの import は,sys.path の要素が ZIP アーカイブへのパスを指している場合にこのモジュールを自動的に 使います。

普通,sys.path はディレクトリ名の文字列からなるリストです。 このモジュールを使うと,sys.path の要素に ZIP ファイル アーカイブを示す文字列を使えるようになります。ZIP アーカイブには サブディレクトリ構造を含めることができ,パッケージの import を サポートさせしたり,アーカイブ内のパスを指定してサブディレクトリ 下から import を行わせたりできます。例えば, /tmp/example.zip/lib/ のように指定すると,アーカイブ中の lib/ サブディレクトリ下だけから import を行います。

ZIP アーカイブ内にはどんなファイルを置いてもかまいませんが, import できるのは.py および .py[co] だけです。 動的モジュール (.pyd.so) の ZIP import は行えません。 アーカイブ内に .py ファイルしか入っていない場合, Python がアーカイブを変更して, .py ファイルに対応する .pyc.pyo ファイルを追加したりはしません。 つまり,ZIP アーカイブ中に .pyc が入っていない 場合, import はやや低速になるかもしれないので注意してください。

ZIP アーカイブからロードしたモジュールに対して組み込み関数 reload() を呼び出すと失敗します; reload() が 必要になるということは,実行時に ZIPファイルが置き換えられてしまう ことになり,あまり起こりそうにない状況だからです。

このモジュールで使える属性を以下に示します:

exception ZipImporterError
zipimporter オブジェクトが送出する例外です。 ImportError のサブクラスなので,ImportError としても捕捉できます。

class zipimporter
ZIP ファイルを import するためのクラスです。 コンストラクタの詳細は ``zipimporter オブジェクト'' (29.2.1 節) を参照してください。

参考:

PKZIP Application Note
ZIP ファイル形式の作者であり,ZIP で使われて いるアルゴリズムの作者でもある Phil Katz による,ZIP ファイル形式 についてのドキュメントです。

PEP 0273, Import Modules from Zip Archives
このモジュールの実装も行った、James C. Ahlstrom による PEP です。 Python 2.3 は PEP 273 の仕様に従っていますが、 Just van Rossum の書いた import フックによる実装を使っています。 import フックは PEP 302 で解説されています。

PEP 0302, New Import Hooks
このモジュールを動作させる助けに なっている import フックの追加を提案している PEP です。



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