Frage

Ich verwende cx_Freeze mein Python-Programm einfrieren. Am laufenden cx_Freeze ist ein Haufen von PYD-Dateien erstellt, eine ganze Reihe von PYC-Dateien werden in ein Archiv mit dem Namen library.zip setzen und ein paar DLL-Dateien sind auch da.

Kann mir jemand sagen, den Unterschied zwischen dem PYC und die PYD-Dateien? Was ist der Grund für die PYD-Dateien nicht in der library.zip? Ist es möglich, auch die PYD-Dateien in das Archiv zu setzen?

Danke.

War es hilfreich?

Lösung

Disclaimer: Ich habe nicht cx_Freeze in eine Weile benutzt ......

.PYD Dateien sind DLL Maschinencode-Dateien, die spezifische Python-erforderlichen Funktionen enthalten.

.pyc Dateien sind Py-Dateien, die in Bytecode kompiliert wurden.

so PYDs Maschinencode sind und PYCs sind Bytecode

Was nun, warum die PYDs sind nicht in der .zip .... Ich kann mich vorstellen, es ist, weil diese .PYDs vom Python-Interpreter benötigt werden, um das Programm auszuführen. Was cx_Freeze tut, ist im Grunde diese:

  1. alle Py-Dateien zusammenstellen und die .pyc Dateien in einem Zip-
  2. werfen
  3. setzen alle benötigten .pyd Dateien im Zip-
  4. eine Stub-Py-Datei erstellen und in das Ausgabeverzeichnis setzen
  5. Kopieren Sie die python.exe und umbenanntes myprogram.exe
  6. Kopieren aller .pyd Dateien benötigt, um die .zip zu öffnen und den Inhalt ausführen

Sie sind also nicht wirklich Ihre Python-Datei kompilieren, die Sie umbenennen, anstatt die interpeter und Einfrieren aller Quelldateien.

Ich hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top