503 Stimmen

Wofür stehen die Python-Dateierweiterungen, .pyc .pyd .pyo?

Was bedeuten diese Python-Dateierweiterungen?

  • .pyc
  • .pyd
  • .pyo

Was sind die Unterschiede zwischen ihnen und wie werden sie aus einer *.py-Datei erzeugt?

557voto

Bill Lynch Punkte 76551
  1. .py : Dies ist normalerweise der von Ihnen geschriebene Eingabe-Quellcode.
  2. .pyc : Dies ist der kompilierte Bytecode. Wenn Sie ein Modul importieren, erstellt Python einen *.pyc Datei, die den Bytecode enthält, um ihn später leichter (und schneller) wieder importieren zu können.
  3. .pyo : Dies war ein Dateiformat, das vor Python 3.5 für *.pyc Dateien, die mit Optimierungen erstellt wurden ( -O ) Flagge. (siehe den Hinweis unten)
  4. .pyd : Dies ist im Grunde eine Windows-DLL-Datei. http://docs.python.org/faq/Windows.html#is-a-pyd-file-the-same-as-a-dll

Auch für einige weitere Diskussionen über .pyc gegen .pyo schauen Sie sich das an: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (Ich habe den wichtigen Teil unten kopiert)

  • Wenn der Python-Interpreter mit dem Flag -O aufgerufen wird, wird optimierter Code erzeugt und in '.pyo'-Dateien gespeichert. Der Optimierer ist derzeit nicht sehr hilfreich; er entfernt nur Assert-Anweisungen. Wenn -O verwendet wird, wird der gesamte Bytecode optimiert; .pyc-Dateien werden ignoriert und .py-Dateien werden zu optimiertem Bytecode kompiliert.
  • Die Übergabe von zwei -O-Flags an den Python-Interpreter (-OO) veranlasst den Bytecode-Compiler, Optimierungen durchzuführen, die in seltenen Fällen zu fehlerhaften Programmen führen können. Derzeit nur __doc__ Strings werden aus dem Bytecode entfernt, was zu kompakteren '.pyo'-Dateien führt. Da einige Programme darauf angewiesen sind, diese Dateien verfügbar zu haben, sollten Sie diese Option nur verwenden, wenn Sie wissen, was Sie tun.
  • Ein Programm läuft nicht schneller, wenn es aus einer '.pyc'- oder '.pyo'-Datei gelesen wird, als wenn es aus einer '.py'-Datei gelesen wird; das einzige, was an '.pyc'- oder '.pyo'-Dateien schneller ist, ist die Geschwindigkeit, mit der sie geladen werden.
  • Wenn ein Skript durch Angabe seines Namens in der Befehlszeile gestartet wird, wird der Bytecode für das Skript niemals in eine '.pyc'- oder '.pyo'-Datei geschrieben. Daher kann die Startzeit eines Skripts verkürzt werden, indem man den größten Teil seines Codes in ein Modul verschiebt und ein kleines Bootstrap-Skript hat, das dieses Modul importiert. Es ist auch möglich, eine '.pyc'- oder '.pyo'-Datei direkt in der Befehlszeile zu benennen.

Anmerkung:

Am 2015-09-15 wurde die Veröffentlichung von Python 3.5 PEP-488 eingeführt und beseitigt .pyo Dateien. Dies bedeutet, dass .pyc Dateien stellen sowohl nicht optimierten als auch optimierten Bytecode dar.

276voto

  • .py - Regelmäßiges Skript
  • .py3 - (selten verwendetes) Python3-Skript. Python3-Skripte enden normalerweise mit ".py" und nicht mit ".py3", aber das habe ich schon ein paar Mal gesehen
  • .pyc - kompiliertes Skript (Bytecode)
  • .pyo - optimierte pyc-Datei (Ab Python3.5 verwendet Python nur noch pyc und nicht mehr pyo und pyc)
  • .pyw - Python-Skript zur Ausführung im Fenstermodus, ohne Konsole; ausgeführt mit pythonw.exe
  • .pyx - Cython src soll nach C/C++ konvertiert werden
  • .pyd - Python-Skript in Form einer Windows-DLL
  • .pxd - Moderner Cython-Header zur Verwendung mit cimport s.
  • .pxi - Cython-Legacy-Header für Rohtext include s.
  • .pyi - Stub-Datei ( PEP 484 )
  • .pyz - Python-Skriptarchiv ( PEP 441 ); dies ist ein Skript, das komprimierte Python-Skripte (ZIP) in binärer Form nach dem Standard-Python-Skript-Header enthält
  • .pyzw - Python-Skriptarchiv für MS-Windows ( PEP 441 ); dies ist ein Skript, das komprimierte Python-Skripte (ZIP) in binärer Form nach dem Standard-Python-Skript-Header enthält
  • .py[cod] - Wildcard-Notation in ".gitignore", die bedeutet, dass die Datei ".pyc", ".pyo" oder ".pyd" sein kann.
  • .pth - eine Pfadkonfigurationsdatei; ihr Inhalt sind zusätzliche Elemente (eines pro Zeile), die zu sys.path . Siehe site Modul.
  • .ei - spezielles Zip, das für Verteilung/Import verwendet wird, meist veraltet seit PEP 427
  • .whl - spezielles Zip, das nur für die Verteilung verwendet wird und weit verbreitet ist bei pip

Eine umfangreichere Liste zusätzlicher Python-Dateierweiterungen (meist selten und inoffiziell) finden Sie unter http://dcjtech.info/topic/python-file-extensions/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X