Документация Python неофициальный перевод

compileall – Побайтовая компиляция библиотек Pythoncompileall – Byte-compile Python libraries

Этот модуль предоставляет несколько вспомогательных функций для установки библиотек Python. Эти функции компилируют исходные файлы Python в дереве каталогов, позволяя пользователям, у которых нет прав на запись в библиотеки, использовать кэшированные байт-кодовые файлы.

Этот модуль также можно использовать как скрипт (с помощью флага -m Python) для компиляции исходных файлов Python. Каталоги для рекурсивного обхода (указание -l отключает рекурсию) перечисляются в командной строке. Если аргументы не заданы, вызов эквивалентен -l sys.path. Вывод списков скомпилированных файлов можно отключить с помощью флага -q. Кроме того, параметр -x принимает в качестве аргумента регулярное выражение. Все файлы, соответствующие выражению, будут пропущены.

compileall.compile_dir(dir[, maxlevels[, ddir[, force[, rx[, quiet]]]]])

Рекурсивно обходит дерево каталогов с именем dir, компилируя все файлы .py по пути. Параметр maxlevels используется для ограничения глубины рекурсии; по умолчанию он равен 10. Если указан ddir, он используется как базовый путь, из которого будут генерироваться имена файлов, используемые в сообщениях об ошибках. Если force истинно, модули перекомпилируются, даже если отметки времени актуальны.

Если задан rx, он определяет регулярное выражение для имен файлов, которые следует исключить из поиска; это выражение ищется в полном пути.

Если quiet истинно, в обычном режиме ничего не выводится в стандартный вывод.

compileall.compile_path([skip_curdir[, maxlevels[, force]]])
Компилирует все файлы .py, найденные вдоль sys.path. Если skip_curdir истинно (по умолчанию), текущий каталог не включается в поиск. Параметры maxlevels и force по умолчанию равны 0 и передаются функции compile_dir().

Чтобы принудительно перекомпилировать все файлы .py в подкаталоге Lib/ и всех его подкаталогах:

import compileall

compileall.compile_dir('Lib/', force=True)

# Выполнить ту же компиляцию, исключая файлы в каталогах .svn.
import re
compileall.compile_dir('Lib/', rx=re.compile('/[.]svn'), force=True)

См. также

Модуль py_compile
Байт-компилирует один исходный файл.