Что означают эти расширения файлов Python?
- .pyc
- .pyd
- .pyo
Каковы различия между ними и как они генерируются из файла * .py?
.py
Обычно это исходный код, который вы написали..pyc
: Это скомпилированный байт-код. Если вы импортируете модуль, python создаст *.pyc
файл, который содержит байт-код, чтобы впоследствии облегчить (и быстрее) его импорт..pyo
: Это был формат файла, который использовался до Python 3.5 для *.pyc
файлов, которые были созданы с -O
флагом optimizations ( ). (см. примечание ниже).pyd
: Это в основном файл Windows DLL. http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dllТакже для дальнейшего обсуждения .pyc
vs .pyo
, посмотрите на: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (я скопировал важную часть ниже)
- Когда интерпретатор Python вызывается с флагом -O, оптимизированный код генерируется и сохраняется в файлах .pyo. В настоящее время оптимизатор мало помогает; он только удаляет утверждения assert. Когда используется -O, весь байт-код оптимизируется; Файлы .pyc игнорируются, а файлы .py компилируются в оптимизированный байт-код.
- Передача двух флагов -O интерпретатору Python (-OO) заставит компилятор байт-кода выполнить оптимизацию, которая в некоторых редких случаях может привести к сбоям в работе программ. В настоящее время
__doc__
из байт-кода удаляются только строки, что приводит к более компактным файлам .pyo. Поскольку некоторые программы могут полагаться на то, что они доступны, вам следует использовать эту опцию, только если вы знаете, что делаете.- Программа не запускается быстрее при чтении из файла .pyc или .pyo, чем при чтении из файла .py; в файлах «.pyc» или «.pyo» быстрее всего скорость загрузки.
- Когда сценарий запускается путем указания его имени в командной строке, байт-код сценария никогда не записывается в файл «.pyc» или «.pyo». Таким образом, время запуска скрипта может быть уменьшено за счет перемещения большей части его кода в модуль и наличия небольшого загрузочного скрипта, который импортирует этот модуль. Можно также назвать файл «.pyc» или «.pyo» непосредственно в командной строке.
Замечания:
В 2015-09-15 выпуск Python 3.5 внедрил PEP-488 и удалил .pyo
файлы. Это означает, что .pyc
файлы представляют как неоптимизированный, так и оптимизированный байт-код.
def f(x): assert(x**5 == x*x*x*x*x); return x; import timeit; print(timeit.repeat("for x in range(100): f(x)", "from __main__ import f", number=10000));
.pyo
файлов. Даже оптимизированный байт-код заканчивается.pyc
расширением Python 3.5.sys.path
. Смотритеsite
модуль.Большой список дополнительных расширений файлов Python (в основном редких и неофициальных) можно найти по адресу http://dcjtech.info/topic/python-file-extensions/
источник
.pth
файлы.