pyinstaller打包
pyinstaller比较重要的命令,-F,-D(默认方式,可不指定),-w
-F 把所有依赖的dll都打包到了exe中,缺点是启动巨慢,特别是依赖了深度学习框架等多种包后
-D 除了exe还会生成很多动态库,启动比-F方式要快很多,但是相比脚本执行,依然会慢很多
-w 不弹出终端
正常编译和打包
# 当前环境下的 pyinstaller
$PyInterpreterDirectory$\pyinstaller.exe -F -w -i .\static\logo.ico .\main.py
没有找到 DLL 出错:
File "site-packages\autoit\autoit.py", line 26, in <module>
OSError: Cannot load AutoItX from path:
C:\Users\AppData\Local\Temp\_MEI179202\autoit\lib\AutoItX3_x64.dll
[22596] Failed to execute script filename
_MEI179202 文件夹是一个临时文件夹,程序在运行时没找到dll,所以要在打包时加入。 其他也通用的。在spec文件中,将对应的dll路径加入再打包即可。 而这个缺失的dll,可以到安装库Lib里去找,如:
E:/GitProjects/python/venv_happy/Lib/site-packages/autoit/lib/AutoItX3_x64.dll
注意有 小括号() 别漏了!!还有后面是autoit\\lib
这里有2个dll,一个64位,为了兼容,可以把2个都加进来
更改完spec后,打包(不需要加任何参数,生成 spec 的时候已经加过了):
pyinstaller main.spec
扩展说明
配置.spec 文件
第一次运行打包命令后,会生成xx.spec文件,如果打包后,exe成功启动,那我恭喜你。如果没有成功,就需要修改.spec文件了。
其实,打包后exe无法正常启动的原因就一个,缺少了dll。那么解决方式也就简单粗暴了,缺啥补啥!
至于缺啥,可以看看终端中输出的信息。