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

py_compile.md

42 строк · 5.6 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.3/library/py_compile.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 31.10. [`py_compile`](https://python-all.ru/3.3/library/py_compile.html#module-py_compile) – компиляция исходных файлов Python89**Исходный код:** [Lib/py\_compile.py](https://python-all.ru/src/3.3/Lib/py_compile.py)1011---1213Модуль [`py_compile`](https://python-all.ru/3.3/library/py_compile.html#module-py_compile) предоставляет функцию для генерации байт-кодового файла из исходного файла, а также другую функцию, используемую при запуске исходного файла модуля как скрипта.1415Хотя эта функция требуется нечасто, она может быть полезна при установке модулей для общего использования, особенно если некоторые пользователи могут не иметь прав на запись файлов кэша байт-кода в каталог, содержащий исходный код.1617#### `exception py_compile.PyCompileError`1819Исключение, возникающее при попытке компиляции файла.2021#### `py_compile.compile(file, cfile=None, dfile=None, doraise=False, optimize=-1)`2223Компилирует исходный файл в байт-код и записывает кэш-файл байт-кода. Исходный код загружается из файла с именем *file*. Байт-код записывается в *cfile*, который по умолчанию принимает путь [**PEP 3147**](https://python-all.ru/3.3/library/py_compile.html), оканчивающийся на `.pyc` (`.pyo`, если в текущем интерпретаторе включена оптимизация). Например, если *file* – это `/foo/bar/baz.py`, то *cfile* по умолчанию будет равен `/foo/bar/__pycache__/baz.cpython-32.pyc` для Python 3.2. Если указан *dfile*, он используется как имя исходного файла в сообщениях об ошибках вместо *file*. Если *doraise* равен true, вызывается [`PyCompileError`](https://python-all.ru/3.3/library/py_compile.html#py_compile.PyCompileError) при обнаружении ошибки во время компиляции *file*. Если *doraise* равен false (по умолчанию), строка ошибки записывается в `sys.stderr`, но исключение не вызывается. Эта функция возвращает путь к скомпилированному в байт-код файлу, то есть то значение *cfile*, которое было использовано.2425Параметр *optimize* управляет уровнем оптимизации и передается встроенной функции [`compile()`](https://python-all.ru/3.3/library/functions.html#compile). Значение по умолчанию `-1` выбирает уровень оптимизации текущего интерпретатора.2627Изменено в версии 3.2: Изменено значение по умолчанию *cfile* на соответствующее [**PEP 3147**](https://python-all.ru/3.3/library/py_compile.html). Ранее значением по умолчанию было *file* + `'c'` (`'o'`, если была включена оптимизация). Также добавлен параметр *optimize*.2829#### `py_compile.main(args=None)`3031Компилирует несколько исходных файлов. Файлы, указанные в *args* (или в командной строке, если *args* равно `None`), компилируются, и результирующий байт-код кэшируется обычным образом. Эта функция не просматривает структуру каталогов для поиска исходных файлов; она компилирует только явно указанные файлы. Если `'-'` – единственный параметр в args, список файлов берется из стандартного ввода.3233Изменено в версии 3.2: добавлена поддержка `'-'`.3435При запуске этого модуля как скрипта, функция [`main()`](https://python-all.ru/3.3/library/py_compile.html#py_compile.main) используется для компиляции всех файлов, перечисленных в командной строке. Код возврата будет ненулевым, если один из файлов не удалось скомпилировать.3637> **См. также**38>39> **Модуль [`compileall`](https://python-all.ru/3.3/library/compileall.html#module-compileall)**40>41> Утилиты для компиляции всех исходных файлов Python в дереве каталогов.42