Python程序打包,首选“PyInstaller”,操作简单,功能丰富,而且它还支持Python2.7和Python3.3+。之前用的py2exe则不支持python3.5。PyInstaller的官网如下:
http://www.pyinstaller.org/
就像官网首页所说的,PyInstaller简单到仅需两条命令即可搞定从安装到打包你的程序:
1)安装PyInstaller
pip install pyinstaller
pyinstaller yourprogram.py
本文不想复述PyInstaller的简单应用,而是通过我遇到的一个案例,来探索PyInstaller的一些稍高级点的应用,它包括:
1)python包装EXE;
2)生成和修改.spec文件;
3)onefolder和onefile;
4)添加icon;
一、需求
我现有一个C/C++程序,它包含两个文件:CheckLicense.exe和EncryptorDll.dll。我一般将它打成一个压缩包给FAE工程师在使用。使用的时候需要先先解压,再运行“CheckLicense.exe”,稍稍有点不方便。
我就想:既然PyInstaller可以将Python程序打包成一个文件,那么有木有可能我用python脚本调用这个“CheckLicense.exe”,然后把“python脚本”、“CheckLicense.exe”和“EncryptorDll.dll”一起用PyInstaller打包成一个EXE文件?
注:有些压缩软件也支持将一个文件夹压缩为一个exe文件,解压缩自动运行指定的文件。但是,这个需要目标电脑安装该压缩软件。
二、探索
1,直接打包
在我之前的博客:http://blog.csdn.net/sagittarius_warrior/article/details/72831039
如果python脚本中通过ctypes调用了某个DLL文件,PyInstaller在打包的时候,除了会自动搜索“依赖的库”、“依赖的python脚本”,还会将“ctypes调用的DLL文件”和该文件依赖的“运行时库”,并打包!是不是很智能?
于是,我想直接写如下脚本,PyInstaller会不会也将我要的文件“CheckLicense.exe”和“EncryptorDll.dll”都打包: