当前位置: 代码迷 >> 综合 >> Python程序打包--PyInstaller
  详细解决方案

Python程序打包--PyInstaller

热度:12   发布时间:2024-01-09 07:11:39.0

    Python程序打包,首选“PyInstaller”,操作简单,功能丰富,而且它还支持Python2.7和Python3.3+。之前用的py2exe则不支持python3.5。PyInstaller的官网如下:

     http://www.pyinstaller.org/

    就像官网首页所说的,PyInstaller简单到仅需两条命令即可搞定从安装到打包你的程序:

1)安装PyInstaller

pip install pyinstaller


2)打包python程序

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”都打包: