环境
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上尝试
|