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