You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将经PyInstaller反编译提取的文件重新编译为EXE?

从PyInstaller反编译文件重新打包为EXE的解决方案

1. 把提取的.pyc转成可执行的.py源码

pyinstrxtractor提取的是字节码文件,直接打包会有问题,先转成源码:

  • 安装反编译工具:pip install uncompyle6(Python3.8+建议用decompyle3)
  • 单个文件转换:uncompyle6 target.pyc > target.py
  • 批量转换:遍历提取目录下的所有.pyc文件,逐个处理。注意优先处理主入口对应的pyc(通常是和原EXE同名,或者__main__.pyc)

2. 验证源码可正常运行

把所有反编译后的.py文件、原程序的资源文件(图片、配置等)整理到同一目录,运行python main.py(替换成你的主入口文件名),确保程序能正常执行,没有报错。这一步是打包成功的前提,源码跑不通的话打包肯定失败。

3. 重新生成.spec文件

之前的.spec没用,大概率是和当前项目结构不匹配,重新生成:

  • 确保PyInstaller已安装:pip install pyinstaller
  • 进入项目根目录,执行:pyinstaller --onefile main.py(生成单文件EXE),或者pyinstaller main.py(生成带依赖目录的EXE)。这会自动生成对应的.spec文件。

4. 按需调整.spec文件

如果程序有特殊需求(比如资源文件、隐藏依赖、自定义图标),修改.spec:

  • 添加资源文件:在datas字段添加,格式为datas=[('src/resource.png', 'dest')],把本地资源映射到打包后的目录
  • 补全隐藏依赖:如果打包后运行提示ModuleNotFoundError,在hiddenimports列表里添加缺失的模块,比如hiddenimports=['pandas', 'cryptography']
  • 设置图标:在exe节点的icon参数指定路径,比如icon='app.ico'

5. 用.spec文件重新打包

执行命令:pyinstaller your_program.spec,打包完成后,EXE文件会生成在dist目录下。

常见问题排查

  • 打包后闪退:打开命令行直接运行EXE,查看具体报错信息,通常是依赖缺失或资源路径错误
  • 反编译源码有语法错误:换用对应Python版本的反编译工具,比如Python3.10+用decompyle3
  • 原程序加密:如果原EXE用PyInstaller的--key参数加密,提取的字节码无法正常反编译,这种情况很难修复

内容的提问来源于stack exchange,提问作者Issac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 08:50:19