все 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Сообщить о неточности