Что означают эти расширения файлов python?
- .pyc
- .pyd
- .pyo
Каковы различия между ними и как они генерируются из файла *.py?
Что означают эти расширения файлов python?
Каковы различия между ними и как они генерируются из файла *.py?
.py
: Обычно это исходный код, который вы написали..pyc
: это скомпилированный байт-код. Если вы импортируете модуль, python создаст файл *.pyc
, который содержит байт-код, чтобы впоследствии облегчить (и быстрее) его импорт..pyo
: это файл *.pyc
, который был создан во время оптимизации (-O
)..pyd
: Это в основном файл Windows DLL. http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dllТакже для дальнейшего обсуждения .pyc
против .pyo
, взгляните на: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (я скопировал важную часть ниже)
- Когда интерпретатор Python вызывается с флагом -O, оптимизированный код генерируется и сохраняется в файлах py.pyo. Оптимизатор в настоящее время мало помогает; он только удаляет утверждения assert. Когда используется -O, весь байт-код оптимизируется; Файлы .pyc игнорируются, а файлы .py компилируются в оптимизированный байт-код.
- Передача двух флагов -O интерпретатору Python (-O O) заставит компилятор байт-кода выполнить оптимизацию, которая в некоторых редких случаях может привести к сбоям в работе программ. В настоящее время из байт-кода удаляются только строки
__doc__
, что приводит к более компактным файлам .pyo. Поскольку некоторые программы могут полагаться на их доступность, вам следует использовать эту опцию, только если вы знаете, что делаете.- Программа не запускается быстрее при чтении из файла .pyc или .pyo, чем при чтении из файла .py; единственное, что быстрее в файлах py.pyc или faster.pyo, - это скорость, с которой они загружаются.
- Когда скрипт запускается с указанием его имени в командной строке, байт-код для скрипта никогда не записывается в файл .pyc или .pyo. Таким образом, время запуска скрипта может быть уменьшено путем перемещения большей части его кода в модуль и наличия небольшого загрузочного скрипта, который импортирует этот модуль. Также можно назвать файл py.pyc или ‘.pyo непосредственно в командной строке.
Примечание:
В 2015-09-15 выпуск Python 3.5 реализовал PEP-488 и исключил файлы .pyo
.
Это означает, что файлы .pyc
представляют как неоптимизированный, так и оптимизированный байт-код.
Большой список дополнительных расширений файлов Python (в основном редких и неофициальных) можно найти по адресу http://dcjtech.info/topic/python-file-extensions/