ImportError: uncompyle2, даже если он установлен - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь использовать код в этом проекте github: https://github.com/Katharsis/unfrozen_binary

Когда я пытаюсь запустить скрипт: python unfrozen_binary_cx_Freeze.py

Я получаю следующую ошибку:

File "/path/to/file/unfrozen_binary-master/common.py", line 20, in <module>
    from decompilers.uncompyle2 import uncompyle_file
ImportError: No module named decompilers.uncompyle2

Я проверил common.py, и он импортирует некомпилированный пакет, как показано ниже:

if python_version[0] == 3:
    from decompilers.unpyc3.unpyc3 import dec_module
elif python_version[0] in (1, 2):
    from decompilers.uncompyle2 import uncompyle_file
    from decompilers.uncompyle2 import Walker

Пакет декомпиляторов недоступен.

Однако у меня уже установлен uncompyle2, поэтому я отредактировал приведенный выше код, чтобы использовать только uncompyle2, так как я использую Python версии 2.7

Теперь я получаю ImportError для uncompyle2, хотя у меня установлены и uncompyle2, и uncompyle6. Даже подтвердил это командой pip show.

>>> import uncompyle2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named uncompyle2
>>> import uncompyle6
>>> 

Однако команда pip show показывает, что установлен uncompyle2:

$ pip show uncompyle2
Name: uncompyle2
Version: 2.0.0
Summary: Python byte-code to source-code converter
Home-page: https://github.com/rocky/python-uncompyle6
Author: Hartmut Goebel
Author-email: h.goebel@crazy-compilers.com
License: MIT
Location: /usr/local/lib/python2.7/dist-packages
Requires: uncompyle6

Кто-нибудь может заставить работать вышеупомянутый проект github?

Пожалуйста, дайте мне знать.

Спасибо.

1 Ответ

0 голосов
/ 28 ноября 2018

Часть вашей проблемы - мои действия: с установкой pip uncompyle2, сейчас вы получаете uncompyle6, а не uncompyle2.

Это решение было принято, потому что в то время, когда это было сделано, не было никого, кто мог бы поддержать какие-либо (из многих) форков uncompyle2. Упаковщик uncompyle2 на pypi был не одним из авторов, а упаковщиком. Так что это была действительно невыносимая ситуация для него.

Если кто-то захочет выйти и поддерживать uncompyle2, он может связаться со мной, и я передам uncompyle2 кому-то другому. Лучше всего поддерживается версия uncompyle2, похоже, под учетной записью wibiti .

Если вы установите его из github источников, то измените from decompilers.uncompyle2 import на from uncompyle2 import в коде unfreeze_binary.

Я вижу, вы открыли проблему с данным проектом. . Это хорошо! Однако с тех пор это похоже на проблему only , которая когда-либо была открыта, и эта проблема была открыта некоторое время назад, это говорит о том, что проект мертв, как многие из uncompyle2 forks и unpyc3, которые только обрабатывает Python 3.3. (Многие пакеты пакетов python, такие как pip, недавно говорили мне, что они больше не поддерживают Python 3.3, поэтому я сомневаюсь, что в настоящее время unpyc3 очень полезен)

Последний коммит в проект unfrozen_binary закончился 4 года назад. Поэтому, учитывая его низкие рейтинги Github, отсутствие коммитов и поддержки, я бы ожидал других проблем в будущем.

Тем не менее, все это с открытым исходным кодом, так что я думаю, что вы или кто-то еще могли бы раскошелиться на код и заставить его работать снова. Если вы сделаете это, я бы предложил использовать uncompyle6, который поддерживает множество версий Python, включая 2.7, 3.3 и текущие версии 3.x. Для этого вместо from decompilers.uncompyle2 import вы бы использовали from uncompyle6 import.

...