Konwertuj PYC na PY
Odzyskuj czytelny kod źródłowy Python z bytecode za pomocą dekompilatorów dopasowanych do wersji.
Twórz pliki PY online
Nie potrafimy jeszcze odczytać plików PYC, więc tej konwersji nie oferujemy. Jeśli możesz wyeksportować swoją pracę do jednego z tych formatów, zrobimy z niego PY:
Chcesz przekonwertować PYC na PY?
Daj nam znać. Kolejne konwersje do dodania wybieramy według zainteresowania.
Jak konwertować pyc do py
- Programowanie
- Brak ocen.
Plik PY jest potrzebny, gdy program, deweloper lub archiwum zawiera wyłącznie skompilowany moduł Python, ale jego kod źródłowy musi zostać przejrzany lub edytowany. Jest to dekompilacja, a nie bezstratna konwersja formatu, dlatego odzyskany kod może różnić się od oryginału.
Czym jest format PYC
Pliki PYC zawierają bytecode Python oraz zserializowany obiekt kodu przeznaczony do wykonania przez interpreter Python. Python zwykle tworzy je podczas importowania lub kompilowania pliku PY i umieszcza je w katalogu __pycache__ pod nazwami takimi jak module.cpython-311.pyc. Zainstalowane pakiety, wdrożenia aplikacji i oprogramowanie zawarte w pakietach mogą zawierać pliki PYC bez odpowiadającego im kodu źródłowego.
Plik PYC ma nagłówek zawierający metadane interpretera i pamięci podręcznej, po którym następują dane bytecode w formacie marshaled. Zwykle nie zachowuje komentarzy, oryginalnych odstępów, sposobu użycia cudzysłowów, formatowania ani dokładnego układu kodu źródłowego. Wiele identyfikatorów pozostaje w obiekcie kodu, ale optymalizacja, obfuskacja, generowany kod i szczegóły kompilacji mogą usunąć lub zmienić niektóre informacje.
Czym jest format PY
PY to plik źródłowy Python w postaci zwykłego tekstu, przeznaczony do odczytu i edycji. Interpretery Python, IDE, lintery, formattery, systemy kontroli wersji i narzędzia do tworzenia pakietów pracują bezpośrednio z plikami PY. W przeciwieństwie do odtworzonego wyniku oryginalny plik PY zachowuje komentarze dewelopera, formatowanie, organizację kodu źródłowego i zwykle całe zamierzenie widoczne na poziomie kodu źródłowego.
Zmiana nazwy pliku PYC na .py nie powoduje jego konwersji: wynik nadal jest binarnym bytecode i nie stanowi prawidłowego kodu źródłowego Python.
Jak zdekompilować plik PYC
- Utwórz kopię pliku PYC i pracuj na tej kopii. Nie uruchamiaj niezaufanego pliku PYC ani odtworzonego skryptu; dekompilatory i importy Python powinny być uruchamiane w izolowanym środowisku, gdy plik jest niezaufany.
- Ustal wersję Python, która utworzyła ten plik. Nazwa taka jak
module.cpython-311.pycwskazuje na CPython 3.11, ale samodzielna nazwa pliku może nie zawierać tych informacji. Dodatkowych wskazówek mogą dostarczyć pakiet, nagłówek PYC lub magic number bytecode. - Zainstaluj dekompilator, którego udokumentowane wsparcie obejmuje tę wersję bytecode. Na przykład:
python -m pip install decompyle3
decompyle3 -o recovered path/to/module.pyc
Katalog wyjściowy powinien zawierać odtworzone pliki źródłowe. Jeśli zainstalowane polecenie nie jest dostępne w systemowej ścieżce, uruchom plik wykonywalny z katalogu skryptów środowiska.
W przypadku innej obsługiwanej wersji wypróbuj uncompyle6:
python -m pip install uncompyle6
uncompyle6 -o recovered path/to/module.pyc
decompyle3 i uncompyle6 obsługują określone zakresy bytecode Python, a nie każdą bieżącą wersję, dlatego przed wyborem jednego z nich sprawdź dokumentację zgodności każdego projektu. pycdc to kolejna lokalna opcja, jeśli jego wydanie obsługuje wersję bytecode tego pliku:
pycdc path/to/module.pyc > recovered.py
Usługi online, takie jak PyLingual, mogą być przydatne w przypadku plików niepoufnych, jeśli ich opublikowane wsparcie obejmuje wersję Python używaną przez plik PYC. Przesłanie bytecode wysyła potencjalnie zastrzeżony kod do podmiotu zewnętrznego i może podlegać ograniczeniom dotyczącym rozmiaru, przechowywania lub przetwarzania; w przypadku poufnego oprogramowania użyj lokalnego narzędzia i zweryfikuj pobrany wynik przed jego otwarciem lub uruchomieniem.
Sprawdź i napraw odtworzony kod źródłowy
Otwórz wygenerowany plik .py w edytorze i sprawdź składnię, importy, obsługę wyjątków, generatory, wyrażenia składane, dekoratory, domknięcia oraz dynamicznie generowany kod. Skompiluj go za pomocą zamierzonego interpretera:
python -m py_compile recovered.py
Pomyślna kompilacja sprawdza wyłącznie składnię. Przed użyciem wyniku jako zamiennego kodu źródłowego uruchom odpowiednie testy i porównaj działanie z oryginalną aplikacją. Dekompilator może wygenerować kod wyglądający na prawidłowy, ale zawierający nieprawidłowy przepływ sterowania lub pozbawiony istotnych szczegółów.
Zgodność i ograniczenia odzyskiwania
Bytecode jest ściśle powiązany z implementacjami i wydaniami Python. Plik PYC utworzony przez Python 3.11 lub 3.12 może nie działać z dekompilatorem obsługującym wyłącznie starszy bytecode; pliki PYC Python 2 zwykle wymagają narzędzi zgodnych z Python 2. Uszkodzony, niekompletny, zoptymalizowany, poddany obfuskacji lub zmodyfikowany plik może wygenerować niepełny wynik albo całkowicie uniemożliwić jego uzyskanie.
Dekomplikacja nie może przywrócić komentarzy, oryginalnego formatowania, niedostępnych modułów zewnętrznych, danych pakietu ani plików źródłowych, do których odwołuje się kod. Moduły rozszerzeń natywnych nie są plikami Python PYC i wymagają innych metod odzyskiwania. Oryginalny plik PY, repozytorium systemu kontroli wersji, archiwum wdrożeniowe, kopia zapasowa lub źródło pakietu to jedyne niezawodne sposoby uzyskania dokładnego kodu źródłowego.
Porównanie formatu PYC z PY
Jak formaty PYC i PY wypadają w porównaniu pod względem najważniejszych cech dla tej konwersji.
| Cecha | .PYC Python compiled bytecode | .PY Python source file |
|---|---|---|
| Czytelny tekstowo | Nie | Tak |
| Formatowanie tekstu | Brak | Podstawowy |
| Obrazy | Nie | Nie |
| Dalsza edycja | Nie do bezpośredniej edycji | Łatwy |
| Otwiera się w przeglądarce internetowej | Nie | Nie |
| Typowy rozmiar pliku | Bardzo mały | Mały |
| Otwarty standard | Tak | Tak |
| Najlepszy do | Osadzanie w aplikacjach | Edycja i postprodukcja |
| Wprowadzono | 1991 | 1991 |
| Twórca | Python Software Foundation | Python Software Foundation |
| Typ MIME | — | text/x-python |
Informacje o rozszerzeniach i typach plików zapewnia File-Extensions.org
Sugerowane oprogramowanie i linki: konwertery pyc na py
Najczęściej zadawane pytania
Czy można przekonwertować plik .pyc z powrotem na plik .py?
Plik .pyc można czasami zdekompilować do przybliżonego kodu źródłowego .py, ale zwykle nie da się go odtworzyć dokładnie. Oryginalne komentarze, formatowanie i niektóre szczegóły na poziomie kodu źródłowego są zazwyczaj tracone podczas kompilacji.
Czy odzyskany kod .py będzie identyczny z oryginalnym?
Nie, odzyskany kod .py jest zwykle rekonstrukcją na podstawie skompilowanego kodu bajtowego, a nie oryginalnym kodem źródłowym. Nazwy i struktura programu mogą być częściowo zachowane, ale komentarze, odstępy, niektóre wyrażenia i inne szczegóły kodu źródłowego mogą być inne lub brakować.
Dlaczego konwersja .pyc na .py nie działa w przypadku niektórych plików Python?
Często kończy się niepowodzeniem, gdy wersja kodu bajtowego nie pasuje do dekompilatora lub gdy plik został zoptymalizowany, zaciemniony, uszkodzony albo utworzony przez inną implementację Python. Plik .pyc może również zawierać wyłącznie skompilowany kod modułu, więc nie da się odtworzyć plików źródłowych ani struktury projektu, których w nim nie było.
Czy mogę uruchomić wynikowy plik .py dokładnie tak jak oryginał?
Często tak, ale nie zawsze; odzyskany kod może wymagać ręcznych poprawek, zanim zacznie działać. Kod bajtowy zależny od wersji Python, brakujące pliki zewnętrzne i utracone szczegóły kodu źródłowego mogą powodować błędy składni lub zmienione działanie.