【问题标题】:ImportError: uncompyle2 even though it's installedImportError: uncompyle2 即使它已安装
【发布时间】:2019-04-20 04:47:48
【问题描述】:

我正在尝试使用这个 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,所以我编辑了上面的代码以仅使用 uncompyle2,因为我使用的是 Python 2.7 版

现在,即使我同时安装了 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 项目工作?

请告诉我。

谢谢。

【问题讨论】:

  • 请记住,它说的是decompilers.uncompyle2,而不仅仅是uncompyle2。你试过pip install decompilers吗?
  • 没有这样的包称为反编译器。至少,我找不到一个。你能找到吗?甚至有人为此在 github 中记录了一个问题:github.com/Katharsis/unfrozen_binary/issues/1 但是没有任何响应。

标签: python decompiler


【解决方案1】:

您的部分问题是我做的:使用 pip install 的 uncompyle2,现在您得到的是 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.。那很好!然而,由于它似乎是唯一 曾经打开过的问题,而且这个问题是在不久前打开的,这表明该项目像许多 uncompyle2 分叉和 unpyc3 一样已经死了。仅处理 Python 3.3。 (很多 python 包,比如 pip,最近都告诉我它们不再支持 Python 3.3,所以我怀疑 unpyc3 现在有多大用处)

unfrozen_binary 项目的最后一次提交是在 4 年前。因此,鉴于其 github 评分低、缺乏提交和支持,我预计还会出现其他问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    相关资源
    最近更新 更多