zipimport --- Import modules from Zip archives

Kod źródłowy: Lib/zipimport.py


Цей модуль додає можливість імпортувати модулі Python (*.py, *.pyc) і пакети з архівів у форматі ZIP. Зазвичай явно не потрібно використовувати модуль zipimport; він автоматично використовується вбудованим механізмом import для елементів sys.path, які є шляхами до архівів ZIP.

Як правило, sys.path — це список імен каталогів у вигляді рядків. Цей модуль також дозволяє елементу sys.path бути рядком, що називає архів ZIP-файлу. Архів ZIP може містити структуру підкаталогів для підтримки імпорту пакунків, а шлях усередині архіву можна вказати лише для імпорту з підкаталогу. Наприклад, шлях example.zip/lib/ імпортуватиметься лише з підкаталогу lib/ в архіві.

Будь-які файли можуть бути присутніми в ZIP-архіві, але імпортери викликаються лише для файлів .py і .pyc. ZIP-імпорт динамічних модулів (.pyd, .so) заборонено. Зауважте, що якщо архів містить лише файли .py, Python не намагатиметься змінити архів, додавши відповідний файл .pyc, тобто якщо архів ZIP не містить .pyc файли, імпортування може бути досить повільним.

Berubah pada versi 3.13: ZIP64 is supported

Berubah pada versi 3.8: Раніше ZIP-архіви з архівним коментарем не підтримувалися.

Lihat juga

Примітка до програми PKZIP

Документація щодо формату файлу ZIP від Філа Каца, творця формату та використаних алгоритмів.

PEP 273 - імпортувати модулі з Zip-архівів

Написав Джеймс К. Алстром, який також забезпечив реалізацію. Python 2.3 відповідає специфікації в PEP 273, але використовує реалізацію, написану Джастом ван Россумом, яка використовує хуки імпорту, описані в PEP 302.

importlib - The implementation of the import machinery

Package providing the relevant protocols for all importers to implement.

Цей модуль визначає виняток:

exception zipimport.ZipImportError

Виняток викликано об’єктами zipimporter. Це підклас ImportError, тому його також можна перехопити як ImportError.

Об'єкти zipimporter

zipimporter — це клас для імпорту ZIP-файлів.

class zipimport.zipimporter(archivepath)

Створіть новий екземпляр zipimporter. архівний шлях має бути шляхом до ZIP-файлу або до певного шляху в ZIP-файлі. Наприклад, архівний шлях foo/bar.zip/lib шукатиме модулі в каталозі lib всередині ZIP-файлу foo/bar.zip (за умови, що воно існує).

ZipImportError виникає, якщо архівний шлях не вказує на дійсний архів ZIP.

Berubah pada versi 3.12: Methods find_loader() and find_module(), deprecated in 3.10 are now removed. Use find_spec() instead.

create_module(spec)

Implementation of importlib.abc.Loader.create_module() that returns None to explicitly request the default semantics.

Added in version 3.10.

exec_module(module)

Implementation of importlib.abc.Loader.exec_module().

Added in version 3.10.

find_spec(fullname, target=None)

An implementation of importlib.abc.PathEntryFinder.find_spec().

Added in version 3.10.

get_code(fullname)

Return the code object for the specified module. Raise ZipImportError if the module couldn't be imported.

get_data(pathname)

Повертає дані, пов’язані з шляхом. Викликати OSError, якщо файл не знайдено.

Berubah pada versi 3.3: IOError sebelumnya ditimbulkan, sekarang merupakan alias dari OSError.

get_filename(fullname)

Return the value __file__ would be set to if the specified module was imported. Raise ZipImportError if the module couldn't be imported.

Added in version 3.1.

get_source(fullname)

Повернути вихідний код для вказаного модуля. Викликати ZipImportError, якщо модуль не вдалося знайти, повернути None, якщо архів містить модуль, але не має джерела для нього.

is_package(fullname)

Повертає True, якщо модуль, визначений повним ім’ям, є пакетом. Викликати ZipImportError, якщо модуль не вдалося знайти.

load_module(fullname)

Load the module specified by fullname. fullname must be the fully qualified (dotted) module name. Returns the imported module on success, raises ZipImportError on failure.

Deprecated since version 3.10, will be removed in version 3.15: Use exec_module() instead.

invalidate_caches()

Clear out the internal cache of information about files found within the ZIP archive.

Added in version 3.10.

archive

Ім’я пов’язаного ZIP-файлу імпортера без можливого підшляху.

prefix

Підшлях у ZIP-файлі, де здійснюється пошук модулів. Це порожній рядок для об’єктів zipimporter, які вказують на корінь ZIP-файлу.

Атрибути archive і prefix у поєднанні з косою рискою дорівнюють оригінальному аргументу archivepath, наданому конструктору zipimporter.

Contoh-contoh

Ось приклад імпорту модуля з ZIP-архіву - зауважте, що модуль zipimport не використовується явно.

$ unzip -l example_archive.zip
Archive:  example_archive.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
     8467  01-01-00 12:30   example.py
 --------                   -------
     8467                   1 file
>>> import sys
>>> # Add the archive to the front of the module search path
>>> sys.path.insert(0, 'example_archive.zip')
>>> import example
>>> example.__file__
'example_archive.zip/example.py'