Зачем конвертировать PY в PYC?
Предварительная компиляция в .pyc позволяет Python пропустить этап парсинга при следующем запуске, что дает небольшое улучшение скорости запуска. Это также обеспечивает легкую обфускацию, так как байт-код не является человекочитаемым исходным кодом, хотя его можно декомпилировать с помощью таких инструментов, как uncompyle6.
Способы конвертации PY в PYC
Python (py_compile) FREE
Запустите python -m py_compile yourscript.py в терминале; файл .pyc появится в подпапке __pycache__ рядом с вашим скриптом с тегом версии Python в названии.
Python (compileall) FREE
Запустите python -m compileall /path/to/project, чтобы скомпилировать сразу все файлы .py в дереве каталогов; все файлы .pyc появятся в соответствующих подпапках __pycache__.
Об этих форматах
Файл .py - это файл исходного кода Python, представляющий собой обычный текст, содержащий программу или скрипт, написанный на языке Python. Чтобы прочитать код, откройте его в любом…
Открыть детали .PY →Файл .pyc - это скомпилированный байт-код Python, который CPython кэширует автоматически для ускорения запуска. Обычно вам не нужно открывать или редактировать его. Чтобы запустить такой…
Открыть детали .PYC →Качество и на что обратить внимание
- Файл
.pycпривязан к конкретной версии Python, которая его скомпилировала - файл, скомпилированный в Python 3.12, не загрузится в Python 3.11 или более ранних версиях, так как каждая версия встраивает уникальное «магическое число» в заголовок. .pycне является реальной защитой исходного кода - такие инструменты, какuncompyle6, могут декомпилировать байт-код обратно в читаемый исходный код Python; не полагайтесь на него для защиты интеллектуальной собственности.- Python 3 всегда записывает файлы
.pycв подпапку__pycache__, а не рядом с исходным файлом; старое расширение оптимизированного байт-кода.pyoбыло удалено в Python 3.5.
Часто задаваемые вопросы
Нужно ли мне вручную компилировать в PYC или Python делает это автоматически?
.pyc при первом запуске. Ручная команда py_compile полезна для предварительной компиляции без запуска или для раннего обнаружения синтаксических ошибок.Могу ли я распространять только файлы PYC без оригинального исходного кода PY?
.pyc зависят от версии и могут быть декомпилированы. Стандартная практика - распространять исходный код .py.Куда Python кладет файл PYC?
__pycache__ рядом с исходным кодом .py, с именем вида yourscript.cpython-312.pyc, отражающим версию Python, которая его скомпилировала.