首页 > 解决方案 > ImportError: uncompyle2 即使它已安装

问题描述

我正在尝试在这个 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 项目工作?

请告诉我。

谢谢。

标签: pythondecompiler

解决方案


你的部分问题是我做的:使用 uncompyle2 的 pip install,现在你得到的是 uncompyle6,而不是 uncompyle2。

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

如果有人想加强和维护 uncompyle2,他们可以联系我,我会将 uncompyle2 转让给其他人。uncompyle2 维护最好的版本似乎是wibiti 帐户下的版本

如果您从github源安装它,则更from decompilers.uncompyle2 import改为from uncompyle2 importunfreeze_binary 代码。

我看到您已经对相关项目提出了问题。. 那很好!然而,由于这似乎是唯一一个被打开的问题,而且这个问题是在不久前打开的,这表明该项目像许多uncompyle2分支一样已经死了,并且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.


推荐阅读