1、Python常见问题:pyinstaller打包的各种异常及其解决方案

目录

点击这里查看所有博文

  随着自己工作的进行,接触到的技术栈也越来越多。给我一个很直观的感受就是,某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了,只有经常会用到的东西才有可能真正记下来。存在很多在特殊情况下有一点用处的技巧,用的不多的技巧可能一个星期就忘了。

  想了很久想通过一些手段把这些事情记录下来。也尝试过在书上记笔记,这也只是一时的,书不在手边的时候那些笔记就和没记一样,不是很方便。

  很多时候我们遇到了问题,一般情况下都是选择在搜索引擎检索相关内容,这样来的也更快一点,除非真的找不到才会去选择翻书。后来就想到了写博客,博客作为自己的一个笔记平台倒是挺合适的。随时可以查阅,不用随身携带。

  同时由于写博客是对外的,既然是对外的就不能随便写,任何人都可以看到。经验对于我来说那就只是经验而已,公布出来说不一定我的一些经验可以帮助到其他的人。遇到和我相同问题时可以少走一些弯路。

  既然决定了要写博客,那就只能认真去写。不管写的好不好,尽力就行。千里之行始于足下,一步一个脚印,慢慢来 ,写的多了慢慢也会变好的。权当是记录自己的成长的一个过程,等到以后再往回看时,就会发现自己以前原来这么菜。

  本系列博客所述资料均来自互联网,并不是本人原创(只有博客是自己写的)。出于热心,本人将自己的所学笔记整理并推出相对应的使用教程,方面其他人学习。为国内的物联网事业发展尽自己的一份绵薄之力,没有为自己谋取私利的想法。若出现侵权现象,请告知本人,本人会立即停止更新,并删除相应的文章和代码。

1、Failed to load

(1)问题描述:main.PyInstallerImportError: Failed to load dynlib/dll ‘C:\Users\YUNZHOU\AppData\Local\Temp\_MEI249602\pyzbar\libiconv.dll’.

Most probably this dynlib/dll was not found when the application was frozen.

(2)采用打包方式:pyinstaller -F main.py

(3)问题分析:没有在pyzbar文件夹下发现dll文件,但是实际可以找的到

(4)解决方法:

  • 采用打包成文件夹的格式打包:pyinstaller -D main.py ,在dist 中生成main 文件夹

  • 再将E:\python3.7.4\Lib\site-packages\pyzbar中的pyzbar文件夹copy到main目录下,

  • 然后再将main文件夹copy到工具的根目录下,在里面运行生成的main.exe,成功

2、DLL load failed

(1)ImportError: DLL load failed: 找不到指定的模块

(2)问题分析:缺少dll文件

(3)解决方法:

  • 方法一:在/build/main/warn_main.txt中查看缺少的dll文件,打包时添加进去pyinstaller --add-binary ‘/path/to/some.dll:.’ main.py

  • 方法二:在.spec中添加dll文件:第一个参数为dll文件的路径,第二个参数为对应的文件夹名称

a = Analysis(...

  binaries=[('/path/to/some.dll', '.'), ... ],

...)

例子:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dxieVlTY-1660634707040)(new 2 (1)].assets/wps2.jpg)

  • 方法三:采用上面的1、Failed to load解决方法

3、py2与py3同时存在

同时含有python2和python3时,打包文件时可以采用绝对路径打包:例如默认打包方式是python3,现在需要python2来打包,找到需要打包的工具的根目录,直接cmd,运行,进入绝对路径下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQX9KXNc-1660634707041)(new 2 (1)].assets/wps3.jpg)

4、failed to execute script

(1)问题描述:failed to execute script

(2)问题分析:该报错是个常见的错误,具体问题具体分析,可能的原因有很多种

(3)解决方法:

  • 可能是打包路径出错,导致运行脚本失败

  • 直接在dist文件夹中运行也会导致错误,需要copy到工具根目录下面运行

5、执行文件闪退

(1)问题描述:打包文件闪退

(2)问题分析:原因很多,具体分析

(3)解决方法:

  • 在将miain.exe文件copy到根目录下后,直接cmd调出命令行,输入:main.exe,直接运行程序,会打印错误的原因,然后分析问题

6、Not found

(1)问题描述:Not found

(2)问题分析:没有发现的两种情况:没有找到资源;没有找到环境

(3)解决方法:

  • 可能运用了大的库:python环境下的Lib\site-packages目录下将库文件copy到工具根目录下,或者导入模块时尽量引用from … import… 语句来代替直接import

  • 确保代码调用的资源的地址是相对地址,并保证该地址与资源地址一致

  那么本篇博客就到此结束了,这里只是记录了一些我个人的学习笔记,其中存在大量我自己的理解。文中所述不一定是完全正确的,可能有的地方我自己也理解错了。如果有些错的地方,欢迎大家批评指正。如有问题直接在对应的博客评论区指出即可,不需要私聊我。我们交流的内容留下来也有助于其他人查看,说不一定也有其他人遇到了同样的问题呢。

你可能感兴趣的:(Python常见问题,windows,python,c++)