Как запустить файл .pyc (скомпилированный python)?

Когда я компилирую файл python, я получаю файл *.pyc. Когда я пытаюсь запустить это, я получаю сообщение о том, что для их запуска нет программы. Когда я ищу программу в Интернете с помощью этой опции, она говорит, что ее нет. Кто-нибудь может помочь мне запустить там файлы?

Поскольку ваш файл python скомпилирован в байтах, вам необходимо запустить его через интерпретатор python

python yourfile.pyc

Причина, по которой вы можете запускать свои файлы .py напрямую, заключается в том, что у вас есть строка

#!/usr/bin/python

или

#!/usr/bin/env python

или что-то подобное в первой строке в файлах .py.Это указывает вашей оболочке выполнить файл с помощью интерпретатора Python.

Чтобы декомпилировать скомпилированные файлы .pyc python3, я использовал uncompyle6 в моей текущей ОС Ubuntu следующим образом:

  1. Установка uncompyle6:

    pip3 install uncompyle6
  2. Чтобы создать файл .py из файла .pyc, выполните:

    uncompyle6 -o . your_filename.pyc
  3. Автоматически будет создан новый файл .py с тем же именем существующего файла .pyc.

Python компилирует файлы .py и сохраняет их как файлы .pyc, чтобы он мог ссылаться на них в последующих вызовах. Файл .pyc содержит скомпилированный байт-код исходных файлов Python, в который интерпретатор Python компилирует исходный код. Затем этот код выполняется виртуальной машиной Python. Нет никакого вреда в их удалении (.pyc), но они сэкономят время компиляции, если вы выполняете много обработки.

Python - это интерпретируемый язык, в отличие от скомпилированного, хотя различие может быть размытым из-за наличия компилятора байт-кода. Компиляция обычно означает преобразование в машинный код, который выполняется быстрее всего. Но переводчики берут удобочитаемый текст и выполняют его. Они могут сделать это на промежуточной стадии.

Например, Когда вы запускаете myprog.py исходный файл, интерпретатор python сначала проверяет, есть ли какие-либо myprog.pyc существует (который представляет собой скомпилированную в байт-коде версию myprog.py), и если оно такое же недавнее или более недавнее, чем myprog.py. Если это так, интерпретатор запускает его. Если он не существует, или myprog.py является более свежим, чем он (это означает, что вы изменили исходный файл), интерпретатор сначала компилирует myprog.py к myprog.pyc.

Из приведенного выше примера есть одно исключение. Если вы поставите #! /usr/bin/env python на первой линии myprog.py, сделайте его исполняемым, а затем запустите myprog.py сам по себе.