Python打包exe和解包

orzlee
2018-12-03 / 0 评论 / 5,139 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年03月17日,已超过1125天没有更新,若内容或图片失效,请留言反馈。

python.jpg

前言

之前自己接触过Python一段时间,不过那只是自己无聊瞎折腾。Python使用空格缩进划分代码块,强制规范了代码得可读性。最近公司有个项目,由Python打包的windows可执行程序,项目已经有了,只不过由于没有更新导致无法使用,需要解包调整代码后再打包。程序不是orzlee写的,也没有多少Python经验,不过会一种编程语言,其他的语言也就是语法差异了。

解包

Python解包使用pyinstxtractor.py,将pyinstxtractor.py和将要解包的.exe放到同一文件夹后执行:

python pyinstxtractor.py example.exe

解包后会在当前目录生成example.exe_extracted文件夹。

如果Python打包的可执行程序是Python 2.7版本,那么example.exe_extracted文件夹中应该直接解包出了pyc文件,其他版本还需要一步。

  1. example.exe_extracted文件夹中找到没有后缀的文件(在文件夹一级目录,不用找其他目录),一般就是主要的pyc文件了(orzlee这个解包后就是main)。

  2. 由于其他版本的Python解包后缺少文件头,所以需要加上:

    1. 需要十六进制编辑器(orzlee随便在网上找了一个Hxd)。

    2. 先将main文件复制一份,重命名为main.pyc

    3. 先打开文件夹中其他pyc后缀的文件,复制文件头。
      Hxd.png

    4. 打开main.pyc将文件头粘贴后保存。
      Hxd_main.png

  3. 安装uncompyle6:

    pip install uncompyle6
  4. 转换pyc文件:

    uncompyle6 main.pyc > main.py

    至此已经解包成功。

打包

修改完代码后再打包回exe可执行文件,需要pyinstaller

  1. 安装pyinstaller:

    pip install pyinstaller

    还有其他方法pyinstaller Downloads

  2. 打包:

    pyinstaller -F main.py

    一定要加上-F参数,不然不会打包成一个文件。
    部分参数说明:

     -F 生成单个可执行文件;
    
     -D  –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。
    
     -w 表示去掉控制台窗口,这在GUI界面时非常有用。命令行程序请无视!;
    
     -c  –console, –nowindowed 使用控制台,无界面(默认);
    
     -p 自定义需要加载的类路径,一般用不到;
    
     -i 表示可执行文件的图标。

结语

python打包成exe可执行文件还是第一次见,打包、解包又长见识了。还好这个python程序非常简单,不然难度真的很大。总之经验是累积起来的,只要有Google在,这点困难还是能应付的。

1
取消
扫码打赏
支付金额随意哦!

评论 (0)

取消