Я искал вверх и вниз, но не могу найти декомпилятор, который будет работать для Python 2.7.pyc. Кто-нибудь знает, кто будет работать на Python 2.7? Благодаря
Декомпилировать Python 2.7.pyc
Ответ 1
ОБНОВЛЕНИЕ (2019-04-22) - Похоже, вы хотите использовать uncompyle6 в наши дни, а не ответы, которые я упоминал первоначально.
Похоже, это работает: http://code.google.com/p/unpyc/
В выпуске 8 говорится, что он поддерживает 2.7: http://code.google.com/p/unpyc/updates/list
ОБНОВЛЕНИЕ (2013-09-03) - как отмечено в комментариях и других ответах, вы должны смотреть https://github.com/wibiti/uncompyle2 или https://github.com/gstarnberger/uncompyle вместо unpyc.
Ответ 2
В случае, если кто-то все еще борется с этим, так как я был сегодня утром, я нашел решение, которое работает для меня:
Инструкции по установке:
git clone https://github.com/gstarnberger/uncompyle.git
cd uncompyle/
sudo ./setup.py install
Как только программа будет установлена (обратите внимание: она будет установлена на ваши доступные для всей системы пакеты Python, поэтому она должна быть в вашем $PATH
), вы можете восстановить файлы Python следующим образом:
uncompyler.py thank_goodness_this_still_exists.pyc > recovered_file.py
Декомпилятор добавляет некоторый шум в основном в виде комментариев, однако я нашел его удивительно чистым и верным моему исходному коду. Вам нужно будет удалить небольшую строку текста, начиная c+++, ближе к концу восстановленного файла, чтобы иметь возможность запускать ваш код.
Ответ 3
Decompyle ++ (pycdc), похоже, работает для ряда версий python: https://github.com/zrax/pycdc
Например:
git clone https://github.com/zrax/pycdc
cd pycdc
make
./bin/pycdc Example.pyc > Example.py
Ответ 4
Вот отличный инструмент для декомпиляции файлов pyc.
Он был закодирован мной и поддерживает python 1.0 - 3.3
Он основан на uncompyle2 и decompyle ++
Ответ 5
Ned Batchelder опубликовал короткий script, который будет демонтировать файл .pyc и разобрать любые объекты кода внутри, так что вы будете способный видеть байт-код Python.
Похоже, что с более новыми версиями Python вам нужно будет прокомментировать строки, которые устанавливают modtime
и печатать его (но не комментируйте строку, которая устанавливает moddate
).
Превращение этого в источник Python было бы несколько сложнее, хотя теоретически возможно. Я предполагаю, что все эти программы, которые работают для более старых версий Python, делают это.