Wie führe ich eine .pyc (kompilierte Python) -Datei aus?


18

Wenn ich eine Python-Datei kompiliere, erhalte ich eine * .pyc-Datei. Wenn ich versuche, das auszuführen, erhalte ich eine Meldung, dass es kein Programm gibt, mit dem ich sie ausführen kann. Wenn ich über diese Option online nach einem Programm suche, heißt es, dass es keine gibt. Kann mir jemand helfen, dort Dateien auszuführen?

Antworten:


24

Da Ihre Python-Datei bytekompiliert ist, müssen Sie sie über den Python-Interpreter ausführen

python yourfile.pyc

Der Grund, warum Sie Ihre .py-Dateien direkt ausführen können, ist, dass Sie die Leitung haben

#!/usr/bin/python

oder

#!/usr/bin/env python

oder ähnliches in der ersten Zeile in den .py-Dateien. Dies weist Ihre Shell an, den Rest der Datei mit dem Python-Interpreter auszuführen.


3
Ergänzend zu dieser Antwort: Eine .pyc-Datei wird nicht im engeren Sinne kompiliert , da es sich nicht um systemeigenen Maschinencode handelt. Es ist, wie @tomdachi schrieb, pythonspezifischer Bytecode (sehr ähnlich zu einer Java-Klasse), weshalb es immer noch den Python-Interpreter benötigt, um zu exektieren.
Pierre-Antoine

Tatsächlich wurde der Pyc nur beim Importieren der Py-Datei generiert. es ist also sinnlos, die pyc-datei auszuführen!
一个 一个 患有 癌 的 的 的 的 搞 金融 的 的 是 为了 8.

2

Um kompilierte .pyc-Python3-Dateien zu dekompilieren, habe ich uncompyle6in meinem aktuellen Ubuntu-Betriebssystem Folgendes verwendet:

  1. Installation von uncompyle6:

    pip3 install uncompyle6
  2. So erstellen Sie eine .py-Datei aus einer .pyc-Datei:

    uncompyle6 -o . your_filename.pyc
  3. Automatisch wird eine neue .py-Datei mit demselben vorhandenen .pyc-Dateinamen erstellt.


-1

Python kompiliert die .py-Dateien und speichert sie als .pyc-Dateien, damit sie in nachfolgenden Aufrufen referenziert werden können. Die .pyc-Datei enthält den kompilierten Bytecode der Python-Quelldateien, in die der Python-Interpreter die Quelle kompiliert. Dieser Code wird dann von der virtuellen Maschine von Python ausgeführt. Es schadet nicht, sie zu löschen (.pyc), aber sie sparen Kompilierungszeit, wenn Sie viel verarbeiten.

Python ist eine interpretierte Sprache im Gegensatz zu einer kompilierten, obwohl die Unterscheidung aufgrund des vorhandenen Bytecode-Compilers verschwommen sein kann. Kompilieren bedeutet normalerweise, in Maschinencode zu konvertieren, der am schnellsten ausgeführt wird. Aber Dolmetscher nehmen für Menschen lesbaren Text und führen ihn aus. Sie können dies mit einer Zwischenstufe tun.

Wenn Sie beispielsweise die Quelldatei myprog.py ausführen, prüft der Python-Interpreter zunächst, ob eine myprog.pycvorhanden ist (dies ist die mit Bytecode kompilierte Version von myprog.py) und ob diese aktueller oder neuer ist als myprog.py. In diesem Fall wird es vom Interpreter ausgeführt. Wenn es nicht existiert oder myprog.pyaktueller ist (dh Sie haben die Quelldatei geändert), kompiliert der Interpreter zuerst myprog.pynach myprog.pyc.

Es gibt eine Ausnahme zu dem obigen Beispiel. Wenn Sie #! /usr/bin/env pythondie erste Zeile von setzen myprog.py, machen Sie es ausführbar und führen es dann myprog.pyvon selbst aus.


1
Willkommen bei Ask Ubuntu ! Dies ist eine nette Erklärung, warum pycDateien existieren, aber Sie haben die Frage, wie sie ausgeführt werden sollen, nicht beantwortet. Es kann als sehr ausführlicher Kommentar und nicht als Antwort gewertet werden . Bitte bearbeiten Sie Ihren Beitrag, um eine tatsächliche Antwort hinzuzufügen.
Melebius
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.