.PYC

PYC-bestand

Compiled Python Bytecode File
Stel een vraag
SNEL ANTWOORD

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 te voeren, gebruikt u de bijbehorende Python-versie. Om broncode te herstellen uit een .pyc, gebruikt u een decompiler zoals decompyle3 of pycdc - resultaten zijn bij benadering en kunnen mislukken bij nieuwere Python-versies.

Ontwikkelaar: Python Software Foundation (CPython) Categorie: Ontwikkelaarsbestanden Open standaard MIME: application/x-python-code
OPENT OP Windows macOS Linux
Gerelateerd: .DO · .MD · .HEX · .XSD

Op deze pagina

19k+ extensies geïndexeerd
Laatst beoordeeld op Jun 30, 2026

Niet zeker wat uw bestand is?

Sleep een bestand naar onze identificatietool - we lezen alleen de eerste bytes om het formaat te benoemen.

Identificeer een bestand

Wat is het PYC-bestandsformaat?

.pyc-bestanden worden gebruikt door de programmeertaal Python. Een .pyc-bestand is een uitvoerbaar bestand dat gecompileerde bytecode bevat voor een programma geschreven in Python-broncode. Bytecode is een set instructies voor de interpreter om het programma uit te voeren zonder de originele broncode bij elke start opnieuw te hoeven analyseren, wat de import- en opstarttijd versnelt.

.pyc-bestanden gaan vergezeld van hun gerelateerde .py-bronbestanden. Python compileert een .py-bestand en slaat het resultaat op in een .pyc-bestand, dat vervolgens kan worden gebruikt om het programma direct uit te voeren. Sinds Python 3.2 worden deze cachebestanden geplaatst in een __pycache__-submap naast de broncode, waarbij de versie van de interpreter in de bestandsnaam is ingebed (bijvoorbeeld script.cpython-312.pyc).

Elk .pyc-bestand begint met een header van 16 bytes. De eerste twee bytes zijn een versiespecifiek „magic number” - dit verandert bij elke CPython-release - gevolgd door 0x0D 0x0A (CR LF) op bytes 2-3. De resterende header-bytes bevatten ofwel een tijdstempel en grootte van het bronbestand (de standaard) of een hash van het bronbestand voor deterministische, reproduceerbare builds, een schema geïntroduceerd door PEP 552 in Python 3.7. Na de header bevat het bestand een „marshalled” code-object dat kan worden geïnspecteerd met de ingebouwde dis-module van Python.

.pyc-bytecode is gebonden aan een specifieke CPython-versie - een bestand gecompileerd onder Python 3.11 zal niet laden onder Python 3.12. Het oudere .pyo geoptimaliseerde bytecode-formaat is verwijderd in Python 3.5; geoptimaliseerde builds produceren nu in plaats daarvan .opt-1.pyc of .opt-2.pyc bestanden. Om een .pyc te decompileren naar leesbare broncode, worden tools zoals uncompyle6, decompyle3 en pycdc (Decompyle++) veel gebruikt, hoewel de compatibiliteit varieert per Python-versie. Op Windows gebruiken gecompileerde extensiemodules het gerelateerde .pyd formaat.

Beveiliging & veiligheid

RISICO: MEDIUM

Een .pyc is bytecode die de Python-interpreter UITVOERT, dus een kwaadaardige .pyc kan willekeurige code uitvoeren net als een script - voer nooit een .pyc uit van een onbetrouwbare bron. Het is ook een veelgebruikte techniek voor het verbergen van malware (alleen gecompileerde bytecode leveren). Omgekeerd biedt het distribueren van uw eigen code als .pyc zeer zwakke bescherming: het kan worden gedecompileerd en, op zijn minst, worden gedemonteerd met de meegeleverde „dis”-module, dus het is GEEN echte manier om broncode geheim te houden. Het verwijderen van __pycache__ / .pyc-bestanden is veilig - Python genereert ze automatisch opnieuw uit de .py-bronbestanden.

Formaatdetails

in een notendop
VOLLEDIGE NAAMCompiled Python Bytecode File
ONTWIKKELAARPython Software Foundation (CPython)sinds Early CPython (1990s); current header layout (PEP 552 hash-based, deterministic) since Python 3.7, 2018
MIME-TYPEapplication/x-python-code
TYPEBinaire CPython-bytecode (marshalled code-object met een header met versie-informatie)
STANDAARDOpen · royaltyvrij
GERELATEERD.do.md.hex.xsd

Programma's die PYC-bestanden openen

Windows3 apps
Python (run it) Open-source Voer het uit met de BIJPASSENDE Python-versie: „python module.pyc”. De interpreter voert de bytecode direct uit - maar de versie moet overeenkomen met de versie die het gecompileerd heeft.
decompyle3 / uncompyle6 (decompile) Open-source Broncode herstellen: „pip install decompyle3” en dan „decompyle3 bestand.pyc > bestand.py”. Werkt het beste voor Python tot ~3.8; commentaren/opmaak gaan verloren.
pycdc (Decompyle++) Open-source Voor nieuwere Python (3.9+) waar uncompyle6 faalt: bouw pycdc en voer „pycdc bestand.pyc” uit. Best-effort; nauwkeurigheid op de nieuwste versies is beperkt.
macOS2 apps
Python (run it) Open-source Voer het uit met de BIJPASSENDE Python-versie: „python module.pyc”. De interpreter voert de bytecode direct uit - maar de versie moet overeenkomen met de versie die het gecompileerd heeft.
uncompyle6 / decompyle3 (decompile) Open-source Installeer via pip en decompileer naar .py; dezelfde versie-waarschuwingen als op Windows.
Linux2 apps
Python (run it) Open-source Voer het uit met de BIJPASSENDE Python-versie: „python module.pyc”. De interpreter voert de bytecode direct uit - maar de versie moet overeenkomen met de versie die het gecompileerd heeft.
decompyle3 / pycdc (decompile) Open-source pip install decompyle3 (of bouw pycdc voor 3.9+), decompileer dan de .pyc terug naar .py.

Technische details

diepe specificaties
OntwikkelaarPython Software Foundation (CPython)
MIME-typeapplication/x-python-code
BestandsstructuurBinair - 16-byte header met versie-informatie gevolgd door een marshalled Python code-object
Magic numberBytes 0-1: versiespecifieke 2-byte waarde (verschilt per CPython-release); bytes 2-3: altijd 0x0D 0x0A (CR LF)
Header-indeling32-bit magic, 32-bit bit-field vlaggen, dan ofwel 32-bit mtime + 32-bit brongrootte (tijdstempelmodus) of een 32-bit bron-hash (PEP 552 hash-modus)
Cache-mapOpgeslagen in __pycache__/ sinds Python 3.2; bestandsnaam codeert de interpreterversie, bijv. script.cpython-312.pyc
VersiecompatibiliteitElke CPython-versie schrijft een uniek magic number; een .pyc van Python 3.11 zal niet laden onder 3.12 en vice versa
Platform-portabiliteitPlatformonafhankelijk binnen dezelfde CPython-versie - dezelfde .pyc draait op Windows, macOS en Linux met een bijpassende interpreter
Geoptimaliseerde variantenpython -O en python -OO produceren .opt-1.pyc en .opt-2.pyc (verwijdert asserts en docstrings); de .pyo-extensie is vervallen in Python 3.5
Controle over automatische generatieCPython schrijft automatisch .pyc-bestanden bij import; onderdrukt door de -B vlag of PYTHONDONTWRITEBYTECODE=1 omgevingsvariabele
Disassembly / decompilatieDe ingebouwde dis-module van Python demonteert bytecode; externe tools uncompyle6, decompyle3 en pycdc (Decompyle++) proberen de broncode te reconstrueren
Intern serialisatieformaatCode-objecten worden geserialiseerd met de marshal-module - een compact binair formaat dat verschilt van pickle en geen deel uitmaakt van de stabiele publieke API
Op hash gebaseerde buildsPEP 552 (Python 3.7+) introduceerde op hash gebaseerde .pyc-bestanden: de header slaat een bronbestand-hash op in plaats van mtime voor reproduceerbare builds
UitgebrachtEarly CPython (1990s); current header layout (PEP 552 hash-based, deterministic) since Python 3.7, 2018
Open standaardJa · royaltyvrij
Specificatiedocs.python.org

PYC conversies

Community V&A

gevraagd door gebruikers
Stel een korte vraag
Krijg hulp van mensen die met PYC-bestanden werken. Wees specifiek - vermeld uw systeem en softwareversie.
Geen account nodig · antwoorden meestal binnen een dag

Nog geen vragen - wees de eerste om iets te vragen over PYC-bestanden.

Veelgestelde vragen

Wat is een .pyc-bestand en kan ik het verwijderen?
Het is gecompileerde Python-bytecode die Python buffert om sneller te starten. U kunt .pyc-bestanden en __pycache__-mappen veilig verwijderen - Python maakt ze opnieuw aan vanuit de .py-broncode de volgende keer dat het programma wordt uitgevoerd.
Hoe converteer ik een .pyc terug naar .py-broncode?
Door het te decompileren. Gebruik decompyle3 of uncompyle6 voor Python tot 3.8 („decompyle3 bestand.pyc > bestand.py”), of pycdc voor Python 3.9+. Resultaten zijn bij benadering - commentaren en exacte opmaak gaan verloren - en kunnen mislukken op de nieuwste Python-versies.
Waarom start mijn .pyc-bestand niet?
Bijna altijd door een versie-mismatch: een .pyc is gebonden aan de exacte CPython-versie die het heeft gemaakt (het magic number). Voer het uit met diezelfde versie, of pak de originele .py en laat uw Python het opnieuw compileren.
Verbergt het leveren van .pyc in plaats van .py mijn broncode?
Slechts in beperkte mate. .pyc kan worden gedecompileerd naar leesbare Python en altijd worden gedemonteerd met de ingebouwde „dis”-module. Het ontmoedigt vluchtig inkijken, maar is geen echte bescherming.
Wat zit er in een __pycache__-map?
Gebufferde .pyc-bestanden met namen als module.cpython-311.pyc - één per geïmporteerde module, gelabeld met de Python-versie. Het is een automatische prestatie-cache en kan veilig worden verwijderd.
Kan ik een .pyc uitvoeren zonder het .py-bestand?
Ja, als u de bijbehorende Python-versie hebt: „python module.pyc”. De .py is alleen nodig voor bewerkingen of voor Python om de cache opnieuw te genereren.

Referenties

1Python docs - dis (bytecode disassembler)docs.python.org
2PEP 552 - Deterministic pycspeps.python.org

Blijf ontdekken

door de database

Populaire extensies deze week

1.AQQAQQ Instant Messenger File
2.CRDOWNLOADChrome Partial Download File
3.PARTPartial Download File
4.BINCD/DVD Disc Image (BIN/CUE)
5.RPMSGRestricted Permission Message
6.MDMarkdown Document
7.NOMEDIAAndroid No-Media Marker File
8.PRO6XProPresenter 6 Bundle File
9.EXEWindows Executable (Portable Executable)
10.PRDXSoftMaker Presentations Document

Gerelateerde extensies

.DOStata Do-File
.MDMarkdown Document
.HEXIntel HEX File
.XSDXML Schema Definition
.MAPSource Map (JavaScript / CSS)
.CONFIGConfiguration File

Gratis bestandstools

Een bestandsidentificatie en afbeeldingsconverter in de browser - alles draait op uw eigen apparaat.

Open de gereedschapskist

Blader door bestandsextensies A-Z