解决uncompyle6反编译报错KeyError

报错内容:KeyError:'3.11.0' (这个是我自己的Python版本号)

解决uncompyle6反编译报错KeyError_第1张图片

主要原因就是你的Python版本没在它库文件支持的版本里,我们需要进行手动添加即可。

首先找到文件:magics.py

我的是在这个路径下:D:\Python\Lib\site-packages\xdis

(每个人Python安装位置不一样,不过后面子文件夹应该是一样的)

解决uncompyle6反编译报错KeyError_第2张图片

打开之后使用快捷键 Ctrl+F 进行关键字搜索:add_canonic_versions

结果有很多,我们定位到最后一个结果的位置,如下图:

将自己的Python版本号添加进去,中间使用空格隔开,修改后如下图:

解决uncompyle6反编译报错KeyError_第3张图片

注意:

解决uncompyle6反编译报错KeyError_第4张图片

修改好之后Ctrl+S保存

尝试使用命令 uncompyle6

依旧报错:

Error: uncompyle6 requires Python 2.6-3.8

我们还需要修改另一个文件:uncompile.py

它的路径大概在:D:\Python\Lib\site-packages\uncompyle6\bin

解决uncompyle6反编译报错KeyError_第5张图片

打开之后,同样检索关键字:main_bin

解决uncompyle6反编译报错KeyError_第6张图片

进行添加,我的Python版本是3.11(同样需要注意空格的使用,格式与它一致

添加后如下图:

解决uncompyle6反编译报错KeyError_第7张图片

接下来再次尝试使用命令 uncompyle6

可以看到没有出现报错,而是提示我们需要输入用于反编译的文件

解决uncompyle6反编译报错KeyError_第8张图片

这里随便用一个正确的pyc文件进行测试:

(注意 > 的前后都需要有空格隔开)

解决uncompyle6反编译报错KeyError_第9张图片

可以看到反编译成功,pyc文件被成功反编译为py源码。

至此,我们解决了uncompyle6反编译报错KeyError的问题。

这篇文章可以帮助你解决 KeyError:'你的Python版本号' 的报错,解决报错之后你可以正常的进行正确的pyc文件的反编译。

但是我在反编译自己生成的pyc文件中遇到了另一个报错:

ImportError: Unknown magic number 3495 in test.pyc

这是因为pyc文件生成时,头部的magic number被清理,需要我们另外补上。

但是这个搞起来似乎有点麻烦,我们首先需要找到或者计算自己版本号对应的Magic Number,再对自己的pyc文件进行修复,Python3.3 - Python3.7(包含3.3)版本中,只需要Magic Number和八位时间戳+大小信息,Python3.3 以下的版本中,只有Magic Number和四位时间戳,在Python3.7及以上版本的编译后二进制文件中,头部除了四字节Magic Number,还有四个字节的空位和八个字节的时间戳+大小信息,不过对文件反编译没有影响,但是也需要全部填充为0。

 

关于这个问题的相关解决方法我将放在下一篇博客,也是在Python专栏,欢迎大家来参考!

你可能感兴趣的:(Python,python,uncompyle,pycharm)