compileall.md
1> **Источник:** https://python-all.ru/3.1/library/compileall.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 30.11. `compileall` – компиляция библиотек Python в байт-код89Этот модуль предоставляет несколько утилитных функций для поддержки установки библиотек Python. Эти функции компилируют исходные файлы Python в дереве каталогов. Модуль можно использовать для создания кэшированных файлов байт-кода во время установки библиотеки, что делает их доступными для использования даже пользователями, у которых нет прав на запись в библиотечные каталоги.1011## 30.11.1. Использование командной строки1213Этот модуль может работать как скрипт (используя **python -m compileall**) для компиляции исходников Python.1415#### `[directory|file]...`1617Позиционные аргументы – это файлы для компиляции или каталоги, содержащие исходные файлы, обход выполняется рекурсивно. Если аргументы не указаны, поведение будет таким, как если бы командная строка была1819`-l <directories from sys.path>`2021.2223#### `-l`2425Не рекурсивно обходить подкаталоги, а компилировать только исходные файлы, непосредственно содержащиеся в указанных или подразумеваемых каталогах.2627#### `-f`2829Принудительная пересборка, даже если метки времени актуальны.3031#### `-q`3233Не выводить список скомпилированных файлов, выводить только сообщения об ошибках.3435#### `-ddestdir`3637Каталог, добавляемый в начало пути к каждому компилируемому файлу. Он будет отображаться в трассировках во время компиляции, а также будет встроен в файл байт-кода, где будет использоваться в трассировках и других сообщениях в случаях, когда исходный файл не существует на момент выполнения файла байт-кода.3839#### `-xregex`4041Регулярное выражение используется для поиска в полном пути каждого файла, рассматриваемого для компиляции, и если есть совпадение, файл пропускается.4243## 30.11.2. Публичные функции4445#### `compileall.compile_dir(dir, maxlevels=10, ddir=None, force=False, rx=None, quiet=False)`4647Рекурсивно обходит дерево каталогов с именем *dir*, компилируя все файлы `.py` по пути.4849Параметр *maxlevels* используется для ограничения глубины рекурсии; по умолчанию он равен `10`.5051Если указан параметр *ddir*, он добавляется в начало пути к каждому компилируемому файлу для использования в трассировках во время компиляции, а также компилируется в файл байт-кода, где будет использоваться в трассировках и других сообщениях в случаях, когда исходный файл не существует на момент выполнения файла байт-кода.5253Если *force* равен true, модули перекомпилируются, даже если временные метки актуальны.5455Если *rx* задан, его метод поиска вызывается для полного пути к каждому файлу, рассматриваемому для компиляции, и если он возвращает истинное значение, файл пропускается.5657Если *quiet* равен true, в стандартный вывод ничего не выводится, за исключением сообщений об ошибках.5859#### `compileall.compile_path(skip_curdir=True, maxlevels=0, force=False)`6061Выполняет байт-компиляцию всех файлов6263`.py`6465, найденных вдоль6667`sys.path`6869. Если7071*skip\_curdir*7273равен true (по умолчанию), текущий каталог не включается в поиск. Все остальные параметры передаются функции7475[`compile_dir()`](https://python-all.ru/3.1/library/compileall.html#compileall.compile_dir)7677. Обратите внимание: в отличие от других функций компиляции,7879`maxlevels`8081по умолчанию равен8283`0`8485.8687Чтобы принудительно перекомпилировать все файлы `.py` в подкаталоге `Lib/` и всех его подкаталогах:8889```python90import compileall9192compileall.compile_dir('Lib/', force=True)9394# Выполнить ту же компиляцию, исключая файлы в каталогах .svn.95import re96compileall.compile_dir('Lib/', rx=re.compile('/[.]svn'), force=True)97```9899> **См. также**100>101> **Модуль [`py_compile`](https://python-all.ru/3.1/library/py_compile.html#module-py_compile)**102>103> Байт-компилирует один исходный файл.104