Jak uruchomić plik .pyc (skompilowany python)?

18

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?

Selby Rowley-Cannon
źródło

Odpowiedzi:

24

Ponieważ plik Pythona jest skompilowany bajtowo, musisz go uruchomić przez interpreter Pythona

python yourfile.pyc

Powodem, dla którego możesz uruchamiać swoje pliki .py bezpośrednio, jest to, że masz linię

#!/usr/bin/python

lub

#!/usr/bin/env python

lub coś podobnego w pierwszym wierszu w plikach .py. To mówi twojej powłoce, aby wykonała resztę pliku za pomocą interpretera Pythona.

tomodachi
źródło
3
Aby uzupełnić tę odpowiedź: plik .pyc nie jest kompilowany w najściślejszym znaczeniu tego terminu, ponieważ nie jest rodzimym kodem maszynowym. Jest to, jak napisał @tomdachi, specyficzny dla Pythona kod bajtowy (bardzo podobny do .class Java), dlatego wciąż potrzebuje interpretera python do interpretacji.
Pierre-Antoine
w rzeczywistości pyc został wygenerowany tylko podczas importowania pliku py. więc nie ma sensu uruchamiać pliku pyc!
一个 患有 癌 并且 卓越 的 工程师 来 陆家嘴 搞 金融 显然 是 为了 理想 哈哈哈
2

Aby dekompilować skompilowane pliki .pyc python3, użyłem uncompyle6w moim obecnym systemie operacyjnym Ubuntu w następujący sposób:

  1. Instalacja uncompyle6:

    pip3 install uncompyle6
  2. Aby utworzyć plik .py z pliku .pyc Uruchom:

    uncompyle6 -o . your_filename.pyc
  3. Automatycznie zostanie utworzony nowy plik .py z taką samą istniejącą nazwą pliku .pyc.

Dhawaleswar
źródło
-1

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.pycistnieje jakiś plik (który jest wersją skompilowaną z użyciem kodu bajtowego myprog.py) i czy jest on najnowszy czy nowszy niż myprog.py. Jeśli tak, interpreter go uruchamia. Jeśli nie istnieje, lub myprog.pyjest nowsza niż nim (czyli po zmianie pliku źródłowego), interpreter pierwsze kompiluje myprog.pydo myprog.pyc.

Jest jeden wyjątek od powyższego przykładu. Jeśli umieścisz #! /usr/bin/env pythonpierwszy wiersz myprog.py, ustaw go jako wykonywalny, a następnie uruchom myprog.pysam.

Shashank Sai Sangu
źródło
1
Witamy w Ask Ubuntu ! To dobre wyjaśnienie, dlaczego pycpliki 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ź.
Melebius