Jak wygenerować plik kodu bajtowego w Pythonie?

| | | | |

Kod bajtowy jest ładowany w czasie wykonywania w Pythonie i interpretowany przez maszynę wirtualną, która jest fragmentem kodu, który odczytuje każdą instrukcję w kodzie bajtowym i wykonuje określoną operację.

Kod bajtowy jest automatycznie generowany w wolumin ten sam katalog co plik .py, gdy moduł Pythona jest importowany po raz pierwszy lub gdy źródło jest późniejsze niż aktualnie skompilowany plik. Przy następnym uruchomieniu programu interpreter Pythona użyje tego pliku, aby pominąć etap kompilacji.

Uruchomienie skryptu nie jest uważane za import i żaden plik .pyc nie zostanie wygenerowane. Na przykład, napiszmy plik skryptu abc.py, , który importuje inny moduł xyz.py. Teraz uruchom plik abc.py , xyz .pyc zostanie wygenerowany, ponieważ xyz zostanie zaimportowany, ale abc.pyc nie zostanie być generowane, ponieważ abc.py nie jest importowany.

Ale są wbudowane moduły i polecenia py_compile i compileall które ułatwiają tworzenie pliku pyc.

  1. Korzystanie z py_compile.compile : Moduł py_compile może ręcznie skompilować dowolny moduł. Jednym ze sposobów jest interaktywne użycie funkcji py_compile.compile w tym module:
    > > > importuj py_compile > > > py_compile.compile (`abc.py`) 

    Spowoduje to zapisanie .pyc w tej samej lokalizacji co abc.py.

  2. Korzystanie z py_compile. main () : kompiluje wiele plików jednocześnie.
    > > > importuj py_compile > > > py_compile.main ([`File1.py`,` File2.py`, `File3.py`]) 
  3. Korzystanie z funkcji compileall.compile_dir() : kompiluje każdy plik Pythona znajdujący się w podanym katalogu.
    > > > importuj kompilację > > > compileall.compile_dir (nazwa katalogu) 
  4. Korzystanie z py_compile w terminalu:
    $ python -m py_compile File1.py File2.py File3.py ... 

    Lub do interaktywnej kompilacji plików

    $ python -m py_compile - File1.py File2.py File3.py. ... ... 
  5. Korzystanie z compileall w terminalu: To polecenie automatycznie rekursywnie przejdzie do podkatalogów i utworzy pliki .pyc dla wszystkich znalezionych plików Pythona.
    $ python -m compileall 

Uwaga . Moduły compileall i py_compile są częścią standardowej biblioteki Pythona, więc nie musisz instalować niczego dodatkowego, aby z nich korzystać.

Linki:
1. https://docs.python.org/3/library/py_compile .html
2. https://docs.python.org/2/library/compileall .html
3. Effbot

Ten artykuł dzięki uprzejmości Shubham Bansal. Jeśli jesteś Python.Engineering i chcesz wnieść swój wkład, możesz również napisać artykuł, korzystając z Contribute.python.engineering lub publikując artykuł przyczynić się @ python.engineering. Zobacz swój artykuł na stronie głównej Python.Engineering i pomóż innym geekom.

Jak wygenerować plik kodu bajtowego w Pythonie? _files: Questions

Jak wygenerować plik kodu bajtowego w Pythonie? File handling: Questions

Shop

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Best laptop for Zoom

$499

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News

Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method