前言
之前自己接触过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
文件,其他版本还需要一步。
-
在
example.exe_extracted
文件夹中找到没有后缀的文件(在文件夹一级目录,不用找其他目录),一般就是主要的pyc
文件了(orzlee这个解包后就是main
)。 -
由于其他版本的Python解包后缺少文件头,所以需要加上:
-
需要十六进制编辑器(orzlee随便在网上找了一个Hxd)。
-
先将main文件复制一份,重命名为main.pyc
-
先打开文件夹中其他pyc后缀的文件,复制文件头。
-
打开main.pyc将文件头粘贴后保存。
-
-
安装uncompyle6:
pip install uncompyle6
-
转换pyc文件:
uncompyle6 main.pyc > main.py
至此已经解包成功。
打包
修改完代码后再打包回exe可执行文件,需要pyinstaller。
-
安装pyinstaller:
pip install pyinstaller
还有其他方法pyinstaller Downloads。
-
打包:
pyinstaller -F main.py
一定要加上
-F
参数,不然不会打包成一个文件。
部分参数说明:-F 生成单个可执行文件; -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。 -w 表示去掉控制台窗口,这在GUI界面时非常有用。命令行程序请无视!; -c –console, –nowindowed 使用控制台,无界面(默认); -p 自定义需要加载的类路径,一般用不到; -i 表示可执行文件的图标。
结语
python打包成exe可执行文件还是第一次见,打包、解包又长见识了。还好这个python程序非常简单,不然难度真的很大。总之经验是累积起来的,只要有Google在,这点困难还是能应付的。
评论 (0)