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

30.10. py_compile – Компиляция исходных файлов Pythonpy_compile – Compile Python source files

Исходный код: Lib/py_compile.py


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

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

exception py_compile.PyCompileError

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

py_compile.compile(file, cfile=None, dfile=None, doraise=False, optimize=-1)

Компилирует исходный файл в байт-код и записывает кэш-файл байт-кода. Исходный код загружается из файла с именем file. Байт-код записывается в cfile, который по умолчанию принимает путь PEP 3147, оканчивающийся на .pyc (.pyo, если в текущем интерпретаторе включена оптимизация). Например, если file – это /foo/bar/baz.py, то cfile по умолчанию будет равен /foo/bar/__pycache__/baz.cpython-32.pyc для Python 3.2. Если указан dfile, он используется как имя исходного файла в сообщениях об ошибках вместо file. Если doraise равен true, вызывается PyCompileError при обнаружении ошибки во время компиляции file. Если doraise равен false (по умолчанию), строка ошибки записывается в sys.stderr, но исключение не вызывается. Эта функция возвращает путь к скомпилированному в байт-код файлу, то есть то значение cfile, которое было использовано.

Параметр optimize управляет уровнем оптимизации и передается встроенной функции compile(). Значение по умолчанию -1 выбирает уровень оптимизации текущего интерпретатора.

Изменено в версии 3.2: Значение по умолчанию cfile изменено на соответствующее PEP 3147. Ранее значением по умолчанию было file + 'c' ('o', если была включена оптимизация). Также добавлен параметр optimize.

py_compile.main(args=None)

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

Изменено в версии 3.2: Добавлена поддержка '-'.

При запуске этого модуля как скрипта, функция main() используется для компиляции всех файлов, перечисленных в командной строке. Код возврата будет ненулевым, если один из файлов не удалось скомпилировать.

См. также

Модуль compileall
Утилиты для компиляции всех исходных файлов Python в дереве каталогов.