> **Источник:** https://python-all.ru/3.0/library/compileall.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# `compileall` – Побайтовая компиляция библиотек Python

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

Этот модуль также можно использовать как скрипт (с помощью флага [*-m*](https://python-all.ru/3.0/using/cmdline.html#cmdoption-m) Python) для компиляции исходных файлов Python. Каталоги для рекурсивного обхода (указание *-l* отключает рекурсию) перечисляются в командной строке. Если аргументы не заданы, вызов эквивалентен `-l sys.path`. Вывод списков скомпилированных файлов можно отключить с помощью флага *-q*. Кроме того, параметр [*-x*](https://python-all.ru/3.0/using/cmdline.html#cmdoption-x) принимает в качестве аргумента регулярное выражение. Все файлы, соответствующие выражению, будут пропущены.

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

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

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

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

#### `[compileall.compile_path]compileall.compile_path([skip_curdir[, maxlevels[, force]]])`

Компилирует все файлы

`.py`

, найденные вдоль

`sys.path`

. Если

*skip\_curdir*

истинно (по умолчанию), текущий каталог не включается в поиск. Параметры

*maxlevels*

и

*force*

по умолчанию равны

`0`

и передаются функции

[`compile_dir()`](https://python-all.ru/3.0/library/compileall.html#compileall.compile_dir)

.

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

```python
import compileall

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

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

> **См. также**
>
> **Модуль [`py_compile`](https://python-all.ru/3.0/library/py_compile.html#module-py_compile)**
>
> Байт-компилирует один исходный файл.
