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

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

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

30.11.1. Использование командной строкиCommand-line use

Этот модуль может работать как скрипт (используя python -m compileall) для компиляции исходников Python.

[directory|file]...
Позиционные аргументы – это файлы для компиляции или каталоги, содержащие исходные файлы, обход выполняется рекурсивно. Если аргументы не указаны, поведение будет таким, как если бы командная строка была -l <directories from sys.path>.
-l
Не рекурсивно обходить подкаталоги, а компилировать только исходные файлы, непосредственно содержащиеся в указанных или подразумеваемых каталогах.
-f
Принудительная пересборка, даже если метки времени актуальны.
-q
Не выводить список скомпилированных файлов, выводить только сообщения об ошибках.
-ddestdir
Каталог, добавляемый в начало пути к каждому компилируемому файлу. Он будет отображаться в трассировках во время компиляции, а также будет встроен в файл байт-кода, где будет использоваться в трассировках и других сообщениях в случаях, когда исходный файл не существует на момент выполнения файла байт-кода.
-xregex
Регулярное выражение используется для поиска в полном пути каждого файла, рассматриваемого для компиляции, и если есть совпадение, файл пропускается.

30.11.2. Публичные функцииPublic functions

compileall.compile_dir(dir, maxlevels=10, ddir=None, force=False, rx=None, quiet=False)

Рекурсивно обходит дерево каталогов с именем dir, компилируя все файлы .py по пути.

Параметр maxlevels используется для ограничения глубины рекурсии; по умолчанию он равен 10.

Если указан параметр ddir, он добавляется в начало пути к каждому компилируемому файлу для использования в трассировках во время компиляции, а также компилируется в файл байт-кода, где будет использоваться в трассировках и других сообщениях в случаях, когда исходный файл не существует на момент выполнения файла байт-кода.

Если force равен true, модули перекомпилируются, даже если временные метки актуальны.

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

Если quiet равен true, в стандартный вывод ничего не выводится, за исключением сообщений об ошибках.

compileall.compile_path(skip_curdir=True, maxlevels=0, force=False)
Выполняет байт-компиляцию всех файлов .py, найденных вдоль sys.path. Если skip_curdir равен true (по умолчанию), текущий каталог не включается в поиск. Все остальные параметры передаются функции compile_dir(). Обратите внимание: в отличие от других функций компиляции, maxlevels по умолчанию равен 0.

Чтобы принудительно перекомпилировать все файлы .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
Байт-компилирует один исходный файл.