Когда я компилирую файл Python, я получаю файл * .pyc. Когда я пытаюсь запустить это, я получаю сообщение о том, что нет программы для их запуска. Когда я ищу программу онлайн через эту опцию, она говорит, что ее нет. Может кто-нибудь помочь мне запустить там файлы?
Так как ваш файл python скомпилирован в байтах, вам нужно запустить его через интерпретатор python
python yourfile.pyc
Причина, по которой вы можете напрямую запустить ваши файлы .py, заключается в том, что у вас есть строка
#!/usr/bin/python
или
#!/usr/bin/env python
или что-то подобное в первой строке в .py файлах. Это говорит вашей оболочке выполнить остальную часть файла с интерпретатором python.
Чтобы декомпилировать скомпилированные файлы .pyc python3, я использовал uncompyle6
в моей текущей ОС Ubuntu следующим образом:
Установка uncompyle6:
pip3 install uncompyle6
Создание файла .py из файла .pyc Выполните:
uncompyle6 -o . your_filename.pyc
Автоматически будет создан новый файл .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
отдельно.