Varför konvertera PY till PYC?
Förkompilering till .pyc gör att Python kan hoppa över parsningssteget vid nästa körning, vilket ger en mindre förbättring av uppstartshastigheten. Det ger också en viss obfuskering eftersom bytecoden inte är mänskligt läsbar källkod, även om den kan dekompileras med verktyg som uncompyle6.
Hur man konverterar PY till PYC
Python (py_compile) FREE
Kör python -m py_compile yourscript.py i en terminal; .pyc-filen visas i undermappen __pycache__ bredvid ditt skript, namngiven med Python-versionstagg.
Python (compileall) FREE
Kör python -m compileall /path/to/project för att kompilera varje .py-fil i ett katalogträd på en gång; alla .pyc-filer visas i sina respektive __pycache__-undermappar.
Om dessa format
En .py-fil är en Python-källkodsfil - vanlig text som innehåller ett program eller skript skrivet i språket Python. För att läsa koden, öppna den i valfri textredigerare. För att köra den,…
Öppna detaljer för .PY →En .pyc-fil är kompilerad Python-bytecode som CPython cachar automatiskt för att påskynda uppstarten. Du behöver normalt inte öppna eller röra den. För att köra en, använd matchande…
Öppna detaljer för .PYC →Kvalitet & vad man bör tänka på
- En
.pyc-fil är bunden till exakt den Python-version som kompilerade den - en fil kompilerad med Python 3.12 kommer inte att laddas i Python 3.11 eller tidigare, eftersom varje version bäddar in ett unikt «magic number» i headern. .pycär inte ett verkligt källkodsskydd - verktyg somuncompyle6kan dekompilera bytecode tillbaka till läsbar Python-källkod; lita inte på det för att skydda immateriella rättigheter.- Python 3 skriver alltid
.pyc-filer till en__pycache__-undermapp, aldrig bredvid källfilen; det gamla filsuffixet.pyoför optimerad bytecode togs bort i Python 3.5.
Vanliga frågor
Behöver jag kompilera manuellt till PYC, eller gör Python det automatiskt?
.pyc automatiskt första gången de körs. Det manuella py_compile-kommandot är användbart för att förkompilera utan att köra eller för att upptäcka syntaxfel tidigt.Kan jag distribuera endast PYC-filerna utan den ursprungliga PY-källkoden?
.pyc-filer är versionsspecifika och kan dekompileras. Standardpraxis är att distribuera .py-källkoden istället.Var placerar Python PYC-filen?
__pycache__-undermapp bredvid .py-källkoden, med ett namn som yourscript.cpython-312.pyc som återspeglar den Python-version som kompilerade den.