python(pyinstaller) 打包总结以及dll not found解决方法

最近工作中需要将python打包成exe,我是用pyinstaller打包的,其他的没有试过。这期间查了不少帖子,遇到了不少坑,最终打包成功,并在其他windows机器上通过测试。一点经验之谈,希望可以帮助到更多人。

环境

我打包的python代码,依赖了paddle,opencv、numpy以及若干第三方库。打包的机器环境是win10,测试机器环境:win10和window server 2008,python环境3.7.9,并且使用了anconda的虚拟环境。

pyinstaller打包

pyinstaller比较重要的命令,-F,-D(默认方式,可不指定),-w
-F 把所有依赖的dll都打包到了exe中,缺点是启动巨慢,特别是依赖了深度学习框架等多种包后
-D 除了exe还会生成很多动态库,启动比-F方式要快很多,但是相比脚本执行,依然会慢很多
-w 不弹出终端

其他命令就不详细说了,有兴趣的朋友可以谷歌、百度一下。比如换图标等等

配置.spec 文件

第一次运行打包命令后,会生成xx.spec文件,如果打包后,exe成功启动,那我恭喜你。如果没有成功,就需要修改.spec文件了。

其实,打包后exe无法正常启动的原因就一个,缺少了dll。那么解决方式也就简单粗暴了,缺啥补啥!
至于缺啥,可以看看终端中输出的信息。我总结了一下,主要分为一下两种:

提示xxx包或者xx.dll not found

这种方式在hidden-import中引入缺失的包即可

提示 dll not found

这种不提示具体的dll的,就要看exe启动中报错的信息了,一般是因为动态编译方式引入的包没有打进去。在spec文件的 binaries中添加包所在的路径即可。
如:binaries=[(‘E:\Anaconda3\envs\paddleOCR\Lib\site-packages\paddle\libs’, ‘.’)]

windows server 2008 无法引入cv2

opencv-python成功安装后,无法import cv2的解决方法:在控制面板→程序和功能→打开关闭windwos功能→功能→添加功能中添加 桌面体检 功能。重启服务器,ok。

你可能感兴趣的:(python,python,开发语言)