Was bedeuten diese Python-Dateierweiterungen?
- .pyc
- .pyd
- .pyo
Was sind die Unterschiede zwischen ihnen und wie werden sie aus einer *.py-Datei erzeugt?
Was bedeuten diese Python-Dateierweiterungen?
Was sind die Unterschiede zwischen ihnen und wie werden sie aus einer *.py-Datei erzeugt?
.py
: Dies ist normalerweise der von Ihnen geschriebene Eingabe-Quellcode..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..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).pyd
: Dies ist im Grunde eine Windows-DLL-Datei. http://docs.python.org/faq/Windows.html#is-a-pyd-file-the-same-as-a-dllAuch 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.
cimport
s.include
s.sys.path
. Siehe site
Modul.pip
Eine umfangreichere Liste zusätzlicher Python-Dateierweiterungen (meist selten und inoffiziell) finden Sie unter http://dcjtech.info/topic/python-file-extensions/
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.