zipimport — Zipアーカイブからモジュールをインポートします—Pythonドキュメント
zipimport —Zipアーカイブからモジュールをインポートします
ソースコード: :source: `Lib / zipimport.py`
このモジュールは、Pythonモジュール(*.py
、*.pyc
)およびパッケージをZIP形式のアーカイブからインポートする機能を追加します。 通常、 zipimport モジュールを明示的に使用する必要はありません。 これは、ZIPアーカイブへのパスである sys.path アイテムに対して、組み込みの import メカニズムによって自動的に使用されます。
通常、 sys.path は、文字列としてのディレクトリ名のリストです。 このモジュールでは、 sys.path のアイテムをZIPファイルアーカイブに名前を付ける文字列にすることもできます。 ZIPアーカイブには、パッケージのインポートをサポートするサブディレクトリ構造を含めることができ、アーカイブ内のパスは、サブディレクトリからのみインポートするように指定できます。 たとえば、パスexample.zip/lib/
は、アーカイブ内のlib/
サブディレクトリからのみインポートされます。
どのファイルもZIPアーカイブに存在する可能性がありますが、インポートできるのはファイル.py
と.pyc
のみです。 動的モジュール(.pyd
、.so
)のZIPインポートは許可されていません。 アーカイブに.py
ファイルのみが含まれている場合、Pythonは対応する.pyc
ファイルを追加してアーカイブを変更しようとしないことに注意してください。つまり、ZIPアーカイブに.pyc
が含まれていない場合です。 ]ファイル、インポートはかなり遅いかもしれません。
バージョン3.8で変更:以前は、アーカイブコメント付きのZIPアーカイブはサポートされていませんでした。
も参照してください
- PKZIPアプリケーションノート
- 使用されたフォーマットとアルゴリズムの作成者であるPhilKatzによるZIPファイルフォーマットに関するドキュメント。
- PEP 273 -Zipアーカイブからモジュールをインポートします
- ジェームズCによって書かれました。 実装も提供したAhlstrom。 Python 2.3は、 PEP 273 の仕様に従いますが、 PEP 302 で説明されているインポートフックを使用するJustvanRossumによって作成された実装を使用します。 ]。
- PEP 302 -新しいインポートフック
- このモジュールの動作を支援するインポートフックを追加するためのPEP。
このモジュールは例外を定義します:
- exception zipimport.ZipImportError
- zipimporterオブジェクトによって発生した例外。 これは ImportError のサブクラスであるため、 ImportError としてもキャッチできます。
zipimporterオブジェクト
zipimporter は、ZIPファイルをインポートするためのクラスです。
- class zipimport.zipimporter(archivepath)
新しいzipimporterインスタンスを作成します。 archivepath は、ZIPファイルへのパス、またはZIPファイル内の特定のパスである必要があります。 たとえば、
foo/bar.zip/lib
の archivepath は、ZIPファイルfoo/bar.zip
内のlib
ディレクトリでモジュールを検索します(存在する場合)。ZipImportError は、 archivepath が有効なZIPアーカイブを指していない場合に発生します。
- find_module(fullname[, path])
フルネームで指定されたモジュールを検索します。 フルネームは、完全修飾(点線)モジュール名である必要があります。 モジュールが見つかった場合はzipimporterインスタンス自体を返し、見つからなかった場合は None を返します。 オプションの path 引数は無視されます。これは、インポータープロトコルとの互換性のためにあります。
- get_code(fullname)
指定されたモジュールのコードオブジェクトを返します。 モジュールが見つからなかった場合は、 ZipImportError を発生させます。
- get_data(pathname)
パス名に関連付けられているデータを返します。 ファイルが見つからなかった場合は、 OSError を発生させます。
- get_filename(fullname)
指定されたモジュールがインポートされた場合に設定される値
__file__
を返します。 モジュールが見つからなかった場合は、 ZipImportError を発生させます。バージョン3.1の新機能。
- get_source(fullname)
指定されたモジュールのソースコードを返します。 モジュールが見つからなかった場合は ZipImportError を発生させ、アーカイブにモジュールが含まれているがソースがない場合は None を返します。
- is_package(fullname)
フルネームで指定されたモジュールがパッケージの場合は、
True
を返します。 モジュールが見つからなかった場合は、 ZipImportError を発生させます。
- load_module(fullname)
フルネームで指定されたモジュールをロードします。 フルネームは、完全修飾(点線)モジュール名である必要があります。 インポートされたモジュールを返すか、見つからなかった場合は ZipImportError を発生させます。
- archive
インポーターに関連付けられたZIPファイルのファイル名。サブパスの可能性はありません。
- prefix
モジュールが検索されるZIPファイル内のサブパス。 これは、ZIPファイルのルートを指すzipimporterオブジェクトの空の文字列です。
archive および prefix 属性は、スラッシュと組み合わせると、 zipimporter コンストラクターに指定された元の archivepath 引数と等しくなります。
例
これは、ZIPアーカイブからモジュールをインポートする例です。 zipimport モジュールは明示的に使用されていないことに注意してください。
$ unzip -l example.zip
Archive: example.zip
Length Date Time Name
-------- ---- ---- ----
8467 11-26-02 22:30 jwzthreading.py
-------- -------
8467 1 file
$ ./python
Python 2.3 (#1, Aug 1 2003, 19:54:32)
>>> import sys
>>> sys.path.insert(0, 'example.zip') # Add .zip file to front of path
>>> import jwzthreading
>>> jwzthreading.__file__
'example.zip/jwzthreading.py'