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

18

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

Селби Роули-Кэннон
источник

Ответы:

24

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

python yourfile.pyc

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

#!/usr/bin/python

или

#!/usr/bin/env python

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

Tomodachi
источник
3
Чтобы дополнить этот ответ: файл .pyc не скомпилирован в самом строгом смысле этого слова, так как он не является машинным кодом. Это, как писал @tomdachi, специфичный для Python байт-код (очень похожий на Java .class), поэтому для его интерпретации все еще нужен интерпретатор Python.
Пьер-Антуан,
фактически pyc генерировался только при импорте файла py. так что запускать файл pyc бесполезно!
一个 患有 癌 并且 卓越 的 工程师 来 陆家陆 嘴 金融 显然 是 为了 理想 理想
2

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

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

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

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

Dhawaleswar
источник
-1

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его самостоятельно.

Шашанк Сай Сангу
источник
1
Добро пожаловать в Спросите Ubuntu ! Это хорошее объяснение того, почему pycфайлы существуют, но вы не ответили на вопрос, как их запускать. Это можно квалифицировать как очень расширенный комментарий, а не как ответ . Пожалуйста, отредактируйте свой пост, чтобы добавить актуальный ответ.
Мелебиус