是否可以将已编译的.pyc文件反编译为.py文件?


Answers:


169

Uncompyle6适用于Python 3.x和2.7-推荐的选项,因为它是最新的工具,旨在统一早期的fork,并专注于自动化单元测试。在GitHub的页面有更多的细节。

  • 如果您使用的是Python 3.7+,则还可以尝试decompile3,它是Uncompyle6的一个分支,专注于3.7及更高版本。
  • 如果需要,确实会在这些项目上引发GitHub问题-两个都在一系列Python版本上运行单元测试套件

较旧的Uncompyle2仅支持Python 2.7。一段时间前,这对我很有效,可以将.pyc字节码反编译为.py,而unpyclib崩溃并发生异常。

使用所有这些工具,您可以获得包括变量名在内的代码,但没有注释。


7
非常感谢。我不小心删除了.py文件而不是.pyc文件。这使我不必从头开始重写它。
avmohan 2014年

20
对于这里的人,因为您不小心删除了错误的文件,我强烈建议您使用源代码控制!
安德鲁·帕尔默

30

是的,您可以unpyclibpypi上找到它。

$ pip install unpyclib

比您可以反编译.pyc文件

$ python -m unpyclib.application -Dq path/to/file.pyc

20
我试过了,它在一个很小的没有复杂代码的文件上崩溃了(Django settings.py)-uncompyle2正常工作。因此,为-1。
RichVel

9
它在lib \ site-packages \ unpyclib \ applcation.py中的Python 3.6中使用print __copyright-为何使用print不带括号的Python 2.7版本崩溃了?
David Ching

1
@DavidChing unpyclib的第一个也是最后一个版本是2009年,可以肯定地说它是仅Python 2程序。
鲍里斯

28

您可以尝试Easy Python Decompiler。它基于Decompyle ++和Uncompyle2。它支持反编译python版本1.0-3.3

注意:我是上述工具的作者。


5
它做它的工作。辛苦了 顺便说一句,您是否使用python编写了此工具?
Shinzou 2015年

1
对我来说效果很好(轻松拖放)。诚然,一个Linux发行版会不错,但是打开Windows盒子并不是那么困难。
布赖恩·杰克逊

上次发布时间是2015年,看起来像是封闭源代码?
鲍里斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.