Когда я компилирую файл 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
сам по себе.