ImportError:uncompyle2,即使已安装

时间:2018-11-17 01:14:11

标签: python decompiler

我正在尝试在以下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并导入了uncompyle软件包,如下所示:

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,因此,仅在使用Python版本2.7时,我才编辑了上面的代码以使用uncompyle2

现在,即使同时安装了uncompyle2和uncompyle6,我仍然收到uncompyle2的ImportError。甚至用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 :(得分:1)

部分问题是我在做的事情:通过uncompyle2的pip安装,现在您正在获得uncompyle6,而不是uncompyle2。

之所以做出此决定,是因为在完成此工作时,没有人愿意维护uncompyle2的任何分支。 pypi上的uncompyle2的打包程序不是作者之一,只是一个打包程序。所以对他来说,这确实是一个站不住脚的情况。

如果有人想加强并维护uncompyle2,他们可以与我联系,我会将uncompyle2转让给其他人。 uncompyle2维护得最好的版本似乎是the one under the wibiti account

如果您是从 github 源安装的,请在unfreeze_binary代码中将from decompilers.uncompyle2 import更改为from uncompyle2 import

我看到您已经打开了一个问题with the project in question.。那很好!但是,由于这似乎已经打开了 only 问题,并且此问题已在不久前发布,因此这表明项目像许多uncompyle2分支和{{ 1}},仅处理Python 3.3。 (许多python软件包(例如pip)最近都告诉我它们不再支持Python 3.3,所以我怀疑unpyc3在当今是否很有用)

unpyc3项目的最后一次提交是在4年前。因此,鉴于其较低的github评分,缺乏提交和支持的情况,我预计还会遇到其他问题。

也就是说,所有这些都是开源的,所以我想你或其他人可以分叉代码并使它重新工作。如果您这样做,我建议您使用uncompyle6,它支持许多Python版本,包括2.7、3.3和当前的3.x版本。为此,您可以使用unfrozen_binary。而不是from decompilers.uncompyle2 import