Сообщить об ошибке.

Импорт модуля из ZIP-архива

Модуль zipimport добавляет возможность импорта модулей Python (*.py, *.pyc) и пакетов из архивов формата ZIP. Обычно явно не требуется использовать модуль zipimport, он автоматически используется встроенным механизмом импорта для элементов sys.path, которые являются путями к архивам ZIP.

Обычно sys.path представляет собой список имен каталогов в виде строк. Этот модуль также добавляет возможность sys.path использовать строки, обозначающие ZIP-архив. ZIP-архив может содержать структуру подкаталогов для поддержки импорта пакетов, а путь в архиве может быть указан только для импорта из подкаталога. Например, путь example.zip/lib/ будет импортироваться только из подкаталога lib/ в архиве.

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

Обратите внимание, что если архив содержит только .py файлы, то Python не будет пытаться изменить архив, добавив соответствующий файл .pyc, а это означает, что, если архив ZIP не содержит файлов .pyc, то импорт может быть довольно медленным.

Изменено в Python 3.8: Ранее ZIP-архивы с комментариями не поддерживались.

Пример использования модуля zipimport:

Вот пример импорта модуля из ZIP-архива. Обратите внимание, что модуль zipimport не используется явно.

# смотрим что в архиве `example.zip`
$ unzip -l example.zip
# Archive:  example.zip
#   Length     Date   Time    Name
#  --------    ----   ----    ----
#      8467  11-26-02 22:30   jwzthreading.py
#  --------                   -------
#      8467                   1 file

Запускаем Python.

>>> import sys
# Добавляем zip-файл в начало пути `sys.path`
>>> sys.path.insert(0, 'example.zip')
# импортируем файл из архива
>>> import jwzthreading
>>> jwzthreading.__file__
# 'example.zip/jwzthreading.py'