.PYC

Plik PYC

Compiled Python Bytecode File
Zadaj pytanie
SZYBKA ODPOWIEDŹ

Plik .pyc to skompilowany kod bajtowy Python, który CPython automatycznie buforuje, aby przyspieszyć uruchamianie. Zazwyczaj nie trzeba go otwierać ani modyfikować. Aby go uruchomić, użyj pasującej wersji Python. Aby odzyskać kod źródłowy z .pyc, użyj dekompilatora, takiego jak decompyle3 lub pycdc - wyniki są przybliżone i mogą zawieść w przypadku nowszych wersji Python.

Deweloper: Python Software Foundation (CPython) Kategoria: Pliki developerskie Otwarty standard MIME: application/x-python-code
OTWIERA SIĘ NA Windows macOS Linux
Powiązane: .DO · .MD · .HEX · .XSD

Na tej stronie

Zindeksowano 19k+ rozszerzeń
Ostatnia weryfikacja Jun 30, 2026

Nie wiesz, co to za plik?

Przeciągnij dowolny plik do naszego identyfikatora - odczytujemy tylko pierwsze bajty, aby nazwać format.

Zidentyfikuj plik

Co to jest format pliku PYC?

Pliki .pyc są używane przez język programowania Python. Plik .pyc to plik wykonywalny zawierający skompilowany kod bajtowy programu napisanego w źródle Python. Kod bajtowy to zestaw instrukcji dla interpretera, umożliwiający uruchomienie programu bez ponownego analizowania oryginalnego źródła przy każdym uruchomieniu, co przyspiesza czas importu i startu.

Plikom .pyc towarzyszą powiązane pliki źródłowe .py. Python kompiluje plik .py i zapisuje wynik w pliku .pyc, który może być następnie użyty do bezpośredniego uruchomienia programu. Od wersji Python 3.2 te pliki pamięci podręcznej są umieszczane w podkatalogu __pycache__ obok źródła, z wersją interpretera osadzoną w nazwie pliku (na przykład script.cpython-312.pyc).

Każdy plik .pyc zaczyna się od 16-bajtowego nagłówka. Pierwsze dwa bajty to specyficzna dla wersji „magic number” - zmienia się ona przy każdym wydaniu CPython - po której następują bajty 0x0D 0x0A (CR LF) na pozycjach 2-3. Pozostałe bajty nagłówka przechowują znacznik czasu i rozmiar pliku źródłowego (domyślnie) lub skrót (hash) pliku źródłowego dla deterministycznych, powtarzalnych kompilacji, co wprowadzono w PEP 552 w Python 3.7. Po nagłówku plik zawiera zserializowany (marshalled) obiekt kodu, który można sprawdzić za pomocą wbudowanego modułu dis języka Python.

Kod bajtowy .pyc jest powiązany z konkretną wersją CPython - plik skompilowany w Python 3.11 nie zostanie załadowany w Python 3.12. Starszy format zoptymalizowanego kodu bajtowego .pyo został usunięty w Python 3.5; zoptymalizowane kompilacje tworzą teraz zamiast tego pliki .opt-1.pyc lub .opt-2.pyc. Aby zdekompilować .pyc z powrotem do czytelnego źródła, powszechnie używa się narzędzi takich jak uncompyle6, decompyle3 i pycdc (Decompyle++), choć kompatybilność zależy od wersji Python. W systemie Windows skompilowane moduły rozszerzeń używają powiązanego formatu .pyd.

Bezpieczeństwo

RYZYKO: MEDIUM

Plik .pyc to kod bajtowy, który interpreter Python WYKONUJE, więc złośliwy .pyc może uruchomić dowolny kod, tak jak skrypt - nigdy nie uruchamiaj .pyc z niezaufanego źródła. Jest to również powszechna technika ukrywania złośliwego oprogramowania (dostarczanie tylko skompilowanego kodu bajtowego). Z drugiej strony, dystrybucja własnego kodu jako .pyc daje bardzo słabą ochronę: można go zdekompilować i przynajmniej rozmontować za pomocą dołączonego modułu „dis”, więc NIE jest to prawdziwy sposób na zachowanie tajemnicy źródła. Usuwanie plików __pycache__ / .pyc jest bezpieczne - Python regeneruje je automatycznie ze źródeł .py.

Szczegóły formatu

w pigułce
PEŁNA NAZWACompiled Python Bytecode File
DEWELOPERPython Software Foundation (CPython)od Early CPython (1990s); current header layout (PEP 552 hash-based, deterministic) since Python 3.7, 2018
TYP MIMEapplication/x-python-code
TYPBinarny kod bajtowy CPython (zserializowany obiekt kodu z nagłówkiem wersji)
STANDARDOtwarty · bezpłatny
POWIĄZANE.do.md.hex.xsd

Programy otwierające pliki PYC

Windows3 apps
Python (run it) Open-source Uruchom go za pomocą PASUJĄCEJ wersji Python: „python module.pyc”. Interpreter wykonuje kod bajtowy bezpośrednio - ale wersja musi zgadzać się z tą, która go skompilowała.
decompyle3 / uncompyle6 (decompile) Open-source Odzyskaj źródło: „pip install decompyle3”, a następnie „decompyle3 plik.pyc > plik.py”. Działa najlepiej dla Python do wersji ~3.8; komentarze/formatowanie zostają utracone.
pycdc (Decompyle++) Open-source Dla nowszych wersji Python (3.9+), gdzie uncompyle6 zawodzi: zbuduj pycdc i uruchom „pycdc plik.pyc”. Działa na zasadzie „best-effort”; dokładność w najnowszych wersjach jest ograniczona.
macOS2 apps
Python (run it) Open-source Uruchom go za pomocą PASUJĄCEJ wersji Python: „python module.pyc”. Interpreter wykonuje kod bajtowy bezpośrednio - ale wersja musi zgadzać się z tą, która go skompilowała.
uncompyle6 / decompyle3 (decompile) Open-source Zainstaluj przez pip i zdekompiluj do .py; te same zastrzeżenia dotyczące wersji, co w systemie Windows.
Linux2 apps
Python (run it) Open-source Uruchom go za pomocą PASUJĄCEJ wersji Python: „python module.pyc”. Interpreter wykonuje kod bajtowy bezpośrednio - ale wersja musi zgadzać się z tą, która go skompilowała.
decompyle3 / pycdc (decompile) Open-source pip install decompyle3 (lub zbuduj pycdc dla 3.9+), a następnie zdekompiluj .pyc z powrotem do .py.

Szczegóły techniczne

specyfikacja
DeweloperPython Software Foundation (CPython)
Typ MIMEapplication/x-python-code
Struktura plikuBinarna - 16-bajtowy nagłówek z wersją, po którym następuje zserializowany obiekt kodu Python
Magic numberBajty 0-1: 2-bajtowa wartość specyficzna dla wersji (różna dla każdego wydania CPython); bajty 2-3: zawsze 0x0D 0x0A (CR LF)
Układ nagłówka32-bitowy magic, 32-bitowe flagi pól bitowych, następnie 32-bitowy mtime + 32-bitowy rozmiar źródła (tryb znacznika czasu) lub 32-bitowy hash źródła (tryb skrótu PEP 552)
Katalog pamięci podręcznejPrzechowywany w __pycache__/ od Python 3.2; nazwa pliku koduje wersję interpretera, np. script.cpython-312.pyc
Kompatybilność wersjiKażda wersja CPython zapisuje unikalny magic number; plik .pyc z Python 3.11 nie załaduje się w 3.12 i odwrotnie
Przenośność platformyNiezależny od platformy w ramach tej samej wersji CPython - ten sam .pyc działa na Windows, macOS i Linux z pasującym interpreterem
Warianty zoptymalizowanepython -O i python -OO tworzą pliki .opt-1.pyc i .opt-2.pyc (usuwają asercje i docstringi); rozszerzenie .pyo zostało wycofane w Python 3.5
Kontrola automatycznego generowaniaCPython zapisuje pliki .pyc automatycznie przy imporcie; można to zablokować flagą -B lub zmienną środowiskową PYTHONDONTWRITEBYTECODE=1
Disassembly / dekompilacjaWbudowany moduł dis języka Python rozmontowuje kod bajtowy; narzędzia zewnętrzne uncompyle6, decompyle3 i pycdc (Decompyle++) próbują zrekonstruować źródło
Wewnętrzny format serializacjiObiekty kodu są serializowane za pomocą modułu marshal - kompaktowego formatu binarnego odrębnego od pickle, niebędącego częścią stabilnego publicznego API
Kompilacje oparte na skrótach (hash)PEP 552 (Python 3.7+) wprowadził pliki .pyc oparte na skrótach: nagłówek przechowuje hash pliku źródłowego zamiast mtime dla powtarzalnych kompilacji
WydanoEarly CPython (1990s); current header layout (PEP 552 hash-based, deterministic) since Python 3.7, 2018
Otwarty standardTak · bezpłatny (royalty-free)
Specyfikacjadocs.python.org

Konwersje PYC

Pytania i odpowiedzi społeczności

pytania użytkowników
Zadaj szybkie pytanie
Uzyskaj pomoc od osób pracujących z plikami PYC. Bądź precyzyjny - podaj system i wersję oprogramowania.
Konto nie jest wymagane · odpowiedzi zazwyczaj w ciągu doby

Brak pytań - bądź pierwszą osobą, która zapyta o pliki PYC.

Najczęściej zadawane pytania

Co to jest plik .pyc i czy mogę go usunąć?
To skompilowany kod bajtowy Python, który język buforuje, aby szybciej się uruchamiać. Możesz bezpiecznie usunąć pliki .pyc i foldery __pycache__ - Python utworzy je ponownie ze źródła .py przy następnym uruchomieniu.
Jak przekonwertować .pyc z powrotem na źródło .py?
Poprzez dekompilację. Użyj decompyle3 lub uncompyle6 dla wersji Python do 3.8 („decompyle3 plik.pyc > plik.py”) lub pycdc dla Python 3.9+. Wyniki są przybliżone - komentarze i dokładne formatowanie zostają utracone - i mogą zawieść w najnowszych wersjach Python.
Dlaczego mój plik .pyc się nie uruchamia?
Prawie zawsze jest to niezgodność wersji: plik .pyc jest powiązany z dokładnie tą wersją CPython, która go utworzyła (magic number). Uruchom go tą samą wersją lub pobierz oryginalny .py i pozwól Pythonowi go skompilować ponownie.
Czy dostarczanie .pyc zamiast .py ukrywa mój kod źródłowy?
Tylko w niewielkim stopniu. .pyc można zdekompilować z powrotem do czytelnego kodu Python i zawsze można go rozmontować (disassemble) za pomocą wbudowanego modułu „dis”. Zniechęca to do przypadkowego podglądania, ale nie jest prawdziwą ochroną.
Co znajduje się w folderze __pycache__?
Zbuforowane pliki .pyc o nazwach takich jak module.cpython-311.pyc - jeden na zaimportowany moduł, oznaczony wersją Python. Jest to automatyczna pamięć podręczna wydajności i można ją bezpiecznie usunąć.
Czy mogę uruchomić .pyc bez pliku .py?
Tak, jeśli masz pasującą wersję Python: „python module.pyc”. Plik .py jest potrzebny tylko do edycji lub do regeneracji pamięci podręcznej przez Python.

Źródła

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

Odkrywaj dalej

w całej bazie danych

Najpopularniejsze rozszerzenia w tym tygodniu

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

Powiązane rozszerzenia

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

Darmowe narzędzia do plików

Identyfikator plików i konwerter obrazów w przeglądarce - wszystko działa na Twoim urządzeniu.

Otwórz przybornik

Przeglądaj rozszerzenia plików A-Z