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

---

# `py_compile` – Компиляция исходных файлов Python

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

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

#### `[py_compile.PyCompileError]exception py_compile.PyCompileError`

Исключение, возникающее при попытке компиляции файла.

#### `[py_compile.compile]py_compile.compile(file[, cfile[, dfile[, doraise]]])`

Компилирует исходный файл в байт-код и записывает файл кэша байт-кода. Исходный код загружается из файла с именем

*file*

. Байт-код записывается в

*cfile*

, который по умолчанию равен

*file*

`+`

`'c'`

(

`'o'`

, если в текущем интерпретаторе включена оптимизация). Если указан

*dfile*

, он используется как имя исходного файла в сообщениях об ошибках вместо

*file*

. Если

*doraise*

равно true, при возникновении ошибки во время компиляции

*file*

возбуждается

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

. Если

*doraise*

равно false (по умолчанию), строка с ошибкой записывается в

`sys.stderr`

, но исключение не возбуждается.

#### `[py_compile.main]py_compile.main([args])`

Компилирует несколько исходных файлов. Файлы, указанные в

*args*

(или в командной строке, если

*args*

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

При запуске этого модуля как скрипта, функция [`main()`](https://python-all.ru/3.0/library/py_compile.html#py_compile.main) используется для компиляции всех файлов, перечисленных в командной строке. Код возврата будет ненулевым, если один из файлов не удалось скомпилировать.

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