pyinstaller打包exe文件后,exe运行报错找不到xx模块

环境

1.操作系统:window10
2.IDE: pycharm
3.pyinstaller版本:4.5
4python版本:3.7

报错现象

1.我这里的第三方模块使用的eventlet和dns,在pycharm中运行py程序,程序正常运行;

2.使用pyinstaller -F 打包成test.exe文件,在命令行中输入 .\test.exe发现程序报第三方模块无法找到

失败的方法

1.按照网上的方法在pyinstaller -F 中加入-p “第三方库绝对路径”,运行依然报错根本不起作用。

2.按照报错信息逐步添加每一个缺失的模块,此方法可以解决问题但是很傻,尤其是第三方库关联其它库的时候,能把你恶心死。

成功的方法

打开pyinstaller的目录,在hooks目录下创建文件,文件名一定是hook-第三方库.py,比如我用的eventlet库,我就需要创建hook-eventlet.py。
在该文件中添加如下代码:

from PyInstaller.utils.hooks import collect_all

datas, binaries, hiddenimports =collect_all('eventlet') #collect_all的参数一定也是第三方库名,不要写错。

然后在用pyinstaller -F 打包exe,运行就不会报错。

PS:此方法暂时没有在Linux上尝试

你可能感兴趣的:(python,python)