如何从.pyo文件中恢复源Python代码(.py)?

8

我需要将一个已编译的Python代码(.pyo)转换为其源代码。我查看了depython.net,但出现了一个问题。有一个警告:

"文件版本早于2.4."

我该怎么办?

谢谢。


1
如果这是你自己的代码,那么将来请使用版本控制系统! - Steven Sproat
3个回答

10

试试这些:

uncompyle2 可以将Python的字节码转换成等效的Python源代码。它接受来自Python版本2.5到2.7的字节码。此外,它只能在Python 2.7上运行。

uncompyle6 将Python的字节码翻译回等效的Python源代码。它接受来自Python版本1.5到3.7左右的字节码,包括Pypy生成的字节码。该代码需要Python 2.4或更高版本,并已在运行版本为2.4、2.5、2.6、2.7、3.2、3.3、3.4、3.5和3.6的Python上进行了测试。


我之前也遇到了同样的问题,这个方法很有用。文档有点误导,大多数都是关于 .pyc 文件的,但是对我的 .pyo 文件也适用良好。 - Arjun
@Arjun:当你写道“文档有点误导,大多数都是关于.pyc的讨论”,如果你能指出哪里误导了你,我会进行修订。或者更好的是,建议一下修改。 - rocky
@rocky,uncompyle6的文档看起来很棒!感谢你的研究 :) - Arjun

1

试试decompyle

这已经成为一项商业服务。
你可以使用Debian Packages来进行实验。

我很想尝试它,但我用的是Windows机器。我一有机会就会尝试它。


我无法理解DebianPackages方法。我也使用Windows,所以我需要像VMware这样的虚拟工作站,但它太复杂了,我无法摆脱它。是否有其他方法?如果有人知道反编译,帮助我,我会非常感激。 谢谢。 - celka
尝试在Sun Virtual Box上安装Ubuntu。它是免费的,易于使用,并且非常可靠 :) - Pratik Deoghare
我会尝试的,谢谢你的关心。希望我能做到。祝你有美好的一天。 :) - celka

1

Decompile,这是一个声誉良好的廉价工具(但你可以在线测试),还有depythonUnPyc项目(仅适用于2.5 <=)。此外,这里还有另一个相关的SO问题。

希望能对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接