Fehlermeldung beim Ausführen von .pyc Datei

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Nobuddy
User
Beiträge: 1023
Registriert: Montag 30. Januar 2012, 16:38

Hallo zusammen,

arbeite schon etwas länger mit Python, habe mich aber bisher nicht mit .pyc beschäftigt.

Ich habe ein Programm geschrieben, das unter Python 3.4 problemlos läuft.
Zum Programmieren, verwende ich Geany.
Heute habe ich das besagte Programm (.py) kompiliert und habe nun eine .pyc des Programmes.
Versuche ich aber diese .pyc Datei zu starten, passiert nichts.
Starte ich diese .pyc Datei aus einem Terminal heraus, erhalte ich folgende Fehlermeldung:
whtb@user:~/Scripte$ python3 gui_work.pyc
RuntimeError: Bad magic number in .pyc file
Ich hoffe, Ihr könnt mich da aufklären, was falsch läuft bzw. was ich falsch mache!

Grüße Nobuddy
BlackJack

@Nobuddy: Die `pyc`-Datei passt nicht zum Interpreter mit dem Du versuchst sie auszuführen. Ich würde mich mit pyc-Dateien gar nicht erst auseinandersetzen. Das ist ein Implementierungsdetail von CPython, das Format kann sich von Version zu Version ändern, die sind nicht dazu gedacht um ”kompilierte Dateien” weiterzugeben. Und falls doch, dann unbedingt mit dem Interpreter zusammen mit dem sie erstellt wurden. Das ist ein Cache-Mechanismus, kein ”offizielles” Datenformat.
Nobuddy
User
Beiträge: 1023
Registriert: Montag 30. Januar 2012, 16:38

Hallo BlackJack,

Danke für Deine Antwort! :wink:

Ich bin davon ausgegangen, daß wenn ich die kompilierte .pyc Datei verwende, das Programm schneller startet und arbeitet.

Grüße Nobuddy
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Jedes Modul wird vor dem Ausfuehren kompiliert, insofern wuerdest du es nicht merken, wenn dem so waere ;)
Nobuddy
User
Beiträge: 1023
Registriert: Montag 30. Januar 2012, 16:38

@cofi, schon klar ..., aber wenn ich mir überlege:
- bei jedem Ausführen ein Modul zu komilieren
- statt ein schon kompiliertes Modul zu verwenden

Wenn keine Änderungen für ein neues Kompilieren des Moduls vorliegen, wäre es ja logisch das bestehende kompilierte Modul zu verwenden, oder?
BlackJack

@Nobuddy: Ja aber das passiert doch automatisch. Ich weiss jetzt nicht was Du da grossartig an Geschwindigkeit gewinnen willst dadurch dass das *eine* Modul über das gestartet wird eventuell kompiliert wird weil kein pyc vorliegt.
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Nobuddy hat geschrieben:Wenn keine Änderungen für ein neues Kompilieren des Moduls vorliegen, wäre es ja logisch das bestehende kompilierte Modul zu verwenden, oder?
Genau das macht Python ja automatisch. Wenn sich nichts geändert hat wird direkt auf die kompilierte Version zurückgegriffen.
Nobuddy
User
Beiträge: 1023
Registriert: Montag 30. Januar 2012, 16:38

Hallo /me,

ich denke daß ich es jetzt verstanden habe! :wink: :D

Ich starte also wie gewohnt meine .py und Python greift automatisch auf die kompilierte Version zu.

Da habe ich mir unnötig den Kopf zerbrochen ..... :lol:
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Nobuddy hat geschrieben:Ich starte also wie gewohnt meine .py und Python greift automatisch auf die kompilierte Version zu.
Es sei denn, dass das letzte Änderungsdatum der pyc-Datei vor dem letzten Änderungsdatum der py-Datei liegt. Dann kompiliert Python natürlich noch mal.
Antworten