Kiedy kompiluję plik Pythona, otrzymuję plik * .pyc. Kiedy próbuję to uruchomić, pojawia się komunikat informujący, że nie ma programu do ich uruchomienia. Kiedy szukam programu online za pomocą tej opcji, jest napisane, że nie ma żadnego. Czy ktoś może mi pomóc uruchomić tam pliki?
18
Aby dekompilować skompilowane pliki .pyc python3, użyłem
uncompyle6
w moim obecnym systemie operacyjnym Ubuntu w następujący sposób:Instalacja uncompyle6:
Aby utworzyć plik .py z pliku .pyc Uruchom:
Automatycznie zostanie utworzony nowy plik .py z taką samą istniejącą nazwą pliku .pyc.
źródło
Python kompiluje pliki .py i zapisuje je jako pliki .pyc, dzięki czemu może odwoływać się do nich w kolejnych wywołaniach. Plik .pyc zawiera skompilowany kod bajtowy plików źródłowych Pythona, do którego interpreter języka Python kompiluje źródło. Ten kod jest następnie wykonywany przez maszynę wirtualną Pythona. Usunięcie ich (.pyc) nie zaszkodzi, ale zaoszczędzą czas kompilacji, jeśli wykonujesz dużo przetwarzania.
Python jest językiem interpretowanym, w przeciwieństwie do skompilowanego, chociaż rozróżnienie może być rozmyte z powodu obecności kompilatora kodu bajtowego. Kompilacja zwykle oznacza konwersję do kodu maszynowego, który działa najszybciej. Ale tłumacze wykonują tekst czytelny dla człowieka i wykonują go. Mogą to zrobić na etapie pośrednim.
Na przykład po uruchomieniu pliku źródłowego myprog.py interpreter Pythona najpierw sprawdza, czy
myprog.pyc
istnieje jakiś plik (który jest wersją skompilowaną z użyciem kodu bajtowegomyprog.py
) i czy jest on najnowszy czy nowszy niżmyprog.py
. Jeśli tak, interpreter go uruchamia. Jeśli nie istnieje, lubmyprog.py
jest nowsza niż nim (czyli po zmianie pliku źródłowego), interpreter pierwsze kompilujemyprog.py
domyprog.pyc
.Jest jeden wyjątek od powyższego przykładu. Jeśli umieścisz
#! /usr/bin/env python
pierwszy wierszmyprog.py
, ustaw go jako wykonywalny, a następnie uruchommyprog.py
sam.źródło
pyc
pliki istnieją, ale nie odpowiedziałeś na pytanie, jak je uruchomić. Można go zakwalifikować jako bardzo rozbudowany komentarz, a nie odpowiedź . Proszę edytować swój post, aby dodać rzeczywistą odpowiedź.