Dlaczego konwertować PY na PYC?
Wstępna kompilacja do .pyc pozwala Python pominąć krok analizy składniowej przy następnym uruchomieniu, co daje niewielką poprawę szybkości startu. Zapewnia to również lekkie zaciemnienie kodu (obfuscation), ponieważ kod bajtowy nie jest źródłem czytelnym dla człowieka, choć można go zdekompilować za pomocą narzędzi takich jak uncompyle6.
Jak przekonwertować PY na PYC
Python (py_compile) FREE
Uruchom python -m py_compile yourscript.py w terminalu; plik .pyc pojawi się w podfolderze __pycache__ obok Twojego skryptu, z nazwą zawierającą tag wersji Python.
Python (compileall) FREE
Uruchom python -m compileall /path/to/project, aby skompilować każdy plik .py w drzewie katalogów naraz; wszystkie pliki .pyc pojawią się w swoich odpowiednich podfolderach __pycache__.
O tych formatach
Plik .py to plik kodu źródłowego Python - zwykły tekst zawierający program lub skrypt napisany w języku Python. Aby odczytać kod, otwórz go w dowolnym edytorze tekstu. Aby go uruchomić,…
Otwórz szczegóły .PY →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…
Otwórz szczegóły .PYC →Jakość i na co uważać
- Plik
.pycjest powiązany z dokładną wersją Python, która go skompilowała - plik skompilowany w Python 3.12 nie załaduje się w Python 3.11 lub starszym, ponieważ każda wersja osadza unikalny „magic number” w nagłówku. .pycnie jest prawdziwą ochroną kodu źródłowego - narzędzia takie jakuncompyle6mogą zdekompilować kod bajtowy z powrotem do czytelnego źródła Python; nie polegaj na tym w celu ochrony własności intelektualnej.- Python 3 zawsze zapisuje pliki
.pycw podfolderze__pycache__, nigdy obok pliku źródłowego; stare rozszerzenie zoptymalizowanego kodu bajtowego.pyozostało usunięte w Python 3.5.
Najczęściej zadawane pytania
Czy muszę ręcznie kompilować do PYC, czy Python robi to automatycznie?
.pyc przy pierwszym uruchomieniu. Ręczne polecenie py_compile jest przydatne do wstępnej kompilacji bez uruchamiania lub do wczesnego wykrywania błędów składniowych.Czy mogę dystrybuować tylko pliki PYC bez oryginalnego źródła PY?
.pyc są specyficzne dla wersji i mogą zostać zdekompilowane. Standardową praktyką jest dystrybucja źródła .py.Gdzie Python umieszcza plik PYC?
__pycache__ obok źródła .py, z nazwą taką jak yourscript.cpython-312.pyc, odzwierciedlającą wersję Python, która go skompilowała.