Waarom PY naar PYC converteren?
Door vooraf te compileren naar .pyc kan Python de parse-stap bij de volgende uitvoering overslaan, wat een kleine verbetering in opstartsnelheid geeft. Het biedt ook een lichte vorm van versluiering (obfuscatie) omdat de bytecode geen voor mensen leesbare broncode is, hoewel het kan worden gedecompileerd met tools zoals uncompyle6.
Hoe PY naar PYC te converteren
Python (py_compile) FREE
Voer python -m py_compile yourscript.py uit in een terminal; het .pyc-bestand verschijnt in de submap __pycache__ naast uw script, benoemd met de Python-versietag.
Python (compileall) FREE
Voer python -m compileall /path/to/project uit om elk .py-bestand in een mappenstructuur in één keer te compileren; alle .pyc-bestanden verschijnen in hun respectievelijke __pycache__-submappen.
Over deze formaten
Een .py-bestand is een Python-broncodebestand - platte tekst die een programma of script bevat dat is geschreven in de taal Python. Om de code te lezen, opent u deze in een willekeurige…
Open .PY details →Een .pyc-bestand is gecompileerde Python-bytecode die CPython automatisch buffert om het opstarten te versnellen. Normaal gesproken hoeft u dit niet te openen of aan te raken. Om er een uit…
Open .PYC details →Kwaliteit & waar op te letten
- Een
.pyc-bestand is gebonden aan de exacte Python-versie die het heeft gecompileerd - een bestand gecompileerd met Python 3.12 zal niet laden in Python 3.11 of eerder, omdat elke versie een uniek „magic number” in de header insluit. .pycis geen echte broncodebeveiliging - tools zoalsuncompyle6kunnen bytecode terug decompileren naar leesbare Python-broncode; vertrouw er niet op om intellectueel eigendom te beschermen.- Python 3 schrijft
.pyc-bestanden altijd in een__pycache__-submap, nooit naast het bronbestand; de oude.pyogeoptimaliseerde bytecode-extensie is verwijderd in Python 3.5.
Veelgestelde vragen
Moet ik handmatig naar PYC compileren, of doet Python dit automatisch?
.pyc de eerste keer dat deze wordt uitgevoerd. Het handmatige py_compile commando is nuttig voor pre-compilatie zonder uitvoering of om syntaxfouten vroegtijdig te ontdekken.Kan ik alleen de PYC-bestanden distribueren zonder de originele PY-broncode?
.pyc-bestanden zijn versiespecifiek en kunnen worden gedecompileerd. De standaardpraktijk is om in plaats daarvan de .py-broncode te distribueren.Waar plaatst Python het PYC-bestand?
__pycache__-submap naast de .py-broncode, met een naam zoals yourscript.cpython-312.pyc die de Python-versie weerspiegelt die het heeft gecompileerd.