← Back

uncompyle6在python3.10及以上版本的使用

python异常

前言

uncompyle6 目前只支持Python 2.6-3.8 ,但是我们需要在高版本python使用他 所以可采用本教程

教程

环境:

Windows 11 专业版 Python 3.11.4

首先我们直接使用uncompyle6时会报错

Traceback (most recent call last):
  File "", line 198, in run_module_as_main
  File "", line 88, in _run_code
  File "C:\Users\Skaur\AppData\Local\Programs\Python\Python311-32\Scripts\uncompyle6.exe__main__.py", line 4, in
  File "C:\Users\Skaur\AppData\Local\Programs\Python\Python311-32\Lib\site-packages\uncompyle6\__init__.py", line 53, in
    import uncompyle6.semantics.pysource
  File "C:\Users\Skaur\AppData\Local\Programs\Python\Python311-32\Lib\site-packages\uncompyle6\semantics\pysource.py", line 141, in
    from uncompyle6.parsers.treenode import SyntaxTree
  File "C:\Users\Skaur\AppData\Local\Programs\Python\Python311-32\Lib\site-packages\uncompyle6\parsers\treenode.py", line 3, in
    from uncompyle6.scanners.tok import NoneToken
  File "C:\Users\Skaur\AppData\Local\Programs\Python\Python311-32\Lib\site-packages\uncompyle6\scanners\tok.py", line 200, in
    NoneToken = Token("LOAD_CONST", offset=-1, attr=None, pattr=None)
  File "C:\Users\Skaur\AppData\Local\Programs\Python\Python311-32\Lib\site-packages\uncompyle6\scanners\tok.py", line 86, in __init__
    from xdis.std import _std_api
  File "C:\Users\Skaur\AppData\Local\Programs\Python\Python311-32\Lib\site-packages\xdis\std.py", line 220, in
    _std_api = make_std_api()
  File "C:\Users\Skaur\AppData\Local\Programs\Python\Python311-32\Lib\site-packages\xdis\std.py", line 218, in make_std_api
    return _StdApi(python_version, variant)
  File "C:\Users\Skaur\AppData\Local\Programs\Python\Python311-32\Lib\site-packages\xdis\std.py", line 73, in __init__
    self.opc = opc = get_opcode_module(python_version, variant)
  File "C:\Users\Skaur\AppData\Local\Programs\Python\Python311-32\Lib\site-packages\xdis\op_imports.py", line 174, in get_opcode_module
    return op_imports[canonic_python_version[vers_str]]
    ~~~~~~^^^^^^^^^^
KeyError: '3.11.4'

KeyError:后的就是不支持的版本

我们来到Python目录下的"\Lib\site-packages\xdis"

找到文件magics.py找到方法add_canonic_versions

在最后一个add_canonic_versions 第一个参数中中加入我们当前的python版本

image-14.png

然后我们运行uncompyle6起来会发现仍然会报错

image-15.png

这个时候我们需要到uncompyle6目录下"\Lib\site-packages\uncompyle6\bin"

打开文件uncompyle6.py找到方法main_bin,加上我们需要支持的版本即可 如: (3, 11)

(注意空格)

image-17.png

这个时候我们再运行uncompyle6就发现不会报错了