Python Glossary English

все Python 3zipfileпонятие

zipfile.PyZipFile

архивы ZIP

Подкласс ZipFile для упаковки Python-модулей: writepy() компилирует .py и кладёт в архив .pyc.

Синтаксис

zipfile.PyZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, optimize=-1)

Получившийся архив можно положить в sys.path и импортировать из него, но внутри обычно лежат только .pyc — исходников там нет, а байт-код привязан к версии интерпретатора: архив, собранный на 3.14, не импортируется на 3.13. Пакет writepy() берёт только с __init__.py, иначе пакует .py-файлы каталога как отдельные модули. Для раздачи программы обычно удобнее zipapp.

Примеры

import sys, zipfile
with open('mymod.py', 'w', encoding='utf-8') as f:
    f.write('X = 42\n')
with zipfile.PyZipFile('lib.zip', 'w') as z:
    z.writepy('mymod.py')
    print(z.namelist())  # → ['mymod.pyc'] — исходника в архиве нет
sys.path.insert(0, 'lib.zip')
import mymod
print(mymod.X)  # → 42

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности