Що означають розширення файлу python, .pyc .pyd .pyo?


436

Що означають ці розширення файлів python?

  • .pyc
  • .pyd
  • .pyo

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

Відповіді:


481
  1. .py: Зазвичай це вхідний вихідний код, який ви написали.
  2. .pyc: Це компільований байт-код. Якщо ви імпортуєте модуль, python створить *.pycфайл, що містить байт-код, щоб зробити його імпорт знову легшим (і швидшим).
  3. .pyo: Це був формат файлів, який використовувався до Python 3.5 для *.pycфайлів, створених з -Oпрапором оптимізації ( ). (див. примітку нижче)
  4. .pyd: Це в основному файл DLL Windows. http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dll

Також для подальшої дискусії щодо .pycvs .pyoпогляньте на сторінку: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (я скопіював важливу частину нижче)

  • Коли інтерпретатор Python викликається прапором -O, оптимізований код генерується та зберігається у файлах '.pyo'. Зараз оптимізатор не дуже допомагає; він видаляє лише заяви твердження. Коли використовується -O, оптимізується весь байт-код; .pyc файли ігноруються, а .py файли збираються для оптимізованого байт-коду.
  • Передача двох-прапорів на інтерпретатор Python (-OO) призведе до того, що компілятор байт-кодів здійснить оптимізацію, яка в деяких рідкісних випадках може призвести до несправних програм. Наразі __doc__з байт-коду видаляються лише рядки, що призводить до отримання більш компактних файлів '.pyo'. Оскільки деякі програми можуть розраховувати на доступність їх, вам слід використовувати цю опцію лише тоді, коли ви знаєте, що робите.
  • Програма не запускається швидше, коли вона читається з файлу '.pyc' або '.pyo', ніж коли вона читається з файлу '.py'; єдине, що швидше стосується файлів '.pyc' або '.pyo', - це швидкість, з якою вони завантажуються.
  • Коли сценарій запускається, вказуючи своє ім'я в командному рядку, байт-код цього сценарію ніколи не записується у файл '.pyc' або '.pyo'. Таким чином, час запуску сценарію може бути скорочено, переміщуючи більшу частину його коду до модуля та маючи невеликий сценарій завантаження, який імпортує цей модуль. Також можна вказати файл '.pyc' або '.pyo' безпосередньо в командному рядку.

Примітка:

15.09.2015 р. Випуск Python 3.5 реалізував PEP-488 та ліквідував .pyoфайли. Це означає, що .pycфайли представляють як неоптимізований, так і оптимізований байт-код.


2
Чи файли dll генеруються із скриптів python чи скриптів c / c ++?
Янкі Твіззі

1
@yankitwizzy: Так. Вони повинні бути згенеровані з коду C / C ++. Файл повинен бути в машинному коді, тому він не може бути безпосередньо з python.
Білл Лінч

"Оптимізатор в даний час не дуже допомагає; він видаляє лише заяви твердження." Ви впевнені в цьому? Спробуйте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));
Хорхе Лейтао

@ JCLeitão: Я впевнений у чому? Чи можете ви пояснити, що, на вашу думку, показує ваш приклад, а не просто кидати код у коментар.
Білл Лінч

9
Зверніть увагу , що в Python 3.5 , PEP 488 реалізується, яка покінчила з концепцією .pyoфайлів. Навіть оптимізований байт-код закінчується .pycрозширенням Python 3.5.
Майкл Керрі

228
  • .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, виконаний у вигляді DLL для Windows
  • .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".
  • .pth - файл конфігурації контуру; його вміст - це додаткові елементи (по одному на рядок), до яких потрібно додати sys.path. Див. siteМодуль.

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


11
Слід зазначити, що файл «.pyx» - це не зовсім джерело Python, яке перетворюється на C, а скоріше вихідний код Cython (тобто: очікування перетворення на C)
Фред Остеррат

Що означає "Я" у розширенні PYI? "Включити" / "Реалізація" / "Інтерфейс"?
ChrisFreeman

1
.pyw означає сценарій PYthon, який створює Вікно, а не Windows Python 4. .pyw може бути виконаний під * nix
Kotauskas

1
Взагалі .pyw - це сценарій, який потрібно запустити у віконному режимі, тобто без консольного виходу. Як зазначає @VladislavToncharov, вони можуть бути запущені на більшості платформ, які підтримують python, якщо він встановлений .
Стів Барнс

1
Ця відповідь має обговорювати .pthфайли.
Вім
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.