Что означают расширения файлов python,.pyc.pyd.pyo?

Что означают эти расширения файлов python?

  • .pyc
  • .pyd
  • .pyo

Каковы различия между ними и как они генерируются из файла *.py?

Ответ 1

  1. .py: Обычно это исходный код, который вы написали.
  2. .pyc: это скомпилированный байт-код. Если вы импортируете модуль, python создаст файл *.pyc, который содержит байт-код, чтобы впоследствии облегчить (и быстрее) его импорт.
  3. .pyo: это файл *.pyc, который был создан во время оптимизации (-O).
  4. .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 представляют как неоптимизированный, так и оптимизированный байт-код.

Ответ 2

  • .py - Обычный скрипт
  • .py3 - (редко используется) скрипт Python3. Скрипты Python3 обычно заканчиваются на ".py", а не ".py3", но я видел это несколько раз
  • .pyc - скомпилированный скрипт (байт-код)
  • .pyo - оптимизированный файл pyc (Начиная с Python3.5, Python будет использовать только pyc, а не pyo и pyc)
  • .pyw - скрипт Python для запуска в оконном режиме без консоли; выполняется с pythonw.exe
  • .pyx - Cython src будет конвертирован в C/C++
  • .pyd - скрипт Python, сделанный как Windows DLL
  • .pxd - скрипт Cython, который эквивалентен заголовку C/C++
  • .pxi - заглушка MyPy
  • .pyi - файл- заглушка (PEP 484)
  • .pyz - архив скриптов Python (PEP 441); это скрипт, содержащий сжатые скрипты Python (ZIP) в двоичной форме после стандартного заголовка скрипта Python
  • .pywz - архив скриптов Python для MS-Windows (PEP 441); это скрипт, содержащий сжатые скрипты Python (ZIP) в двоичной форме после стандартного заголовка скрипта Python
  • .py [cod] - подстановочный знак в ".gitignore", который означает, что файл может быть ".pyc", ".pyo" или ".pyd".

Большой список дополнительных расширений файлов Python (в основном редких и неофициальных) можно найти по адресу http://dcjtech.info/topic/python-file-extensions/