py_compile — Компиляция файлов исходного кода Python
Исходный код: 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/PEP 488 с окончанием
.pyc. Например, если file —/foo/bar/baz.py, cfile по умолчанию будет/foo/bar/__pycache__/baz.cpython-32.pycдля Python 3.2. Если указан dfile, он используется в качестве имени исходного файла в сообщениях об ошибках вместо file. Если doraise равно true, при возникновении ошибки при компиляции file генерируетсяPyCompileError. Если doraise равно false (по умолчанию), строка ошибки записывается вsys.stderr, но исключение не генерируется. Эта функция возвращает путь к скомпилированному файлу байткода, то есть значение, которое было использовано cfile.Если путь, который становится cfile (либо явно указанный, либо вычисленный), является символической ссылкой или нерегулярным файлом, произойдёт
FileExistsError. Это служит предупреждением о том, что импорт преобразует эти пути в обычные файлы, если это разрешено. Это побочный эффект импорта, использующего переименование файлов для размещения окончательного скомпилированного файла байткода, чтобы предотвратить проблемы одновременной записи в файлы.optimize управляет уровнем оптимизации и передаётся встроенной функции
compile(). Значение по умолчанию-1выбирает уровень оптимизации текущего интерпретатора.Изменено в версии 3.2: Изменено значение по умолчанию cfile на соответствие PEP 3147. Предыдущее значение по умолчанию было file +
'c'('o'если была включена оптимизация). Также добавлен параметр optimize.Изменено в версии 3.4: Код изменён на использование
importlibдля записи в файл кеша байткода. Это означает, что семантика создания/записи файлов теперь соответствует тому, что делаетimportlib, например, разрешения, семантика записи и перемещения и т. д. Также добавлено замечание о том, чтоFileExistsErrorгенерируется, если cfile является символической ссылкой или нерегулярным файлом.
-
py_compile.main(args=None) -
Компилирует несколько исходных файлов. Файлы, указанные в args (или в командной строке, если args
None), компилируются, а полученный байт-код кэшируется стандартным способом. Эта функция не ищет структуру каталогов для поиска исходных файлов; она компилирует только явно указанные файлы. Если'-'— единственный параметр в args, список файлов берётся из стандартного ввода.Изменено в версии 3.2: Добавлена поддержка
'-'.
При выполнении этого модуля как скрипта используется main() для компиляции всех файлов, указанных в командной строке. Код завершается с ненулевым статусом, если один из файлов не удалось скомпилировать.
См. также
-
Modulecompileall -
Утилиты для компиляции всех файлов исходного кода Python в дереве каталогов.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.6/library/py_compile.html