用Pyinstaller将带数据的python文件转为exe

用Pyinstaller将带数据的python文件转为exe_第1张图片首先,到py文件所在路径下,输入指令:

pyinstaller demo.py #demo.py是我们要exe化的py文件

回车,完成后这里生成 dist 文件夹 及 build 文件夹,
进入 dist 文件夹,再进入demo文件夹,运行demo.exe
用Pyinstaller将带数据的python文件转为exe_第2张图片这时大多情况下不是一帆风顺的:
用Pyinstaller将带数据的python文件转为exe_第3张图片大多情况会出现ModuleNotFoundError等错误,对于这种,如果是缺包就pip install,如果安了包还有这种错误,就要返回py文件所在的那个路径:
用Pyinstaller将带数据的python文件转为exe_第4张图片在这里插入图片描述返回.py文件所在路径,可以发现新增了.spec这个文件,记事本打开这个文件,在hiddenimports中添加刚才报错的那个名称:
用Pyinstaller将带数据的python文件转为exe_第5张图片hiddenimports=['sklearn.utils.sparsetools._graph_validation','sklearn.utils.sparsetools._graph_tools' ,'sklearn.utils.lgamma','sklearn.utils._cython_blas','cython','sklearn'],

这里因为我已经知道我缺这些,直接就加在这里了。大家有耐心的可以一次次运行exe试试,然后将自己缺的包写在这里就ok了

这里还没有结束,下面就要pyinstaller 这个.spec文件了:
用Pyinstaller将带数据的python文件转为exe_第6张图片输入指令:

pyinstaller demo.spec

回车,完成后的exe就可以顺利运行啦
(数据文件夹要和exe同路径)

如果嫌exe显示时间太短,则在py文件最后加上

os.system("pause")

然后记得重新pyinstaller demo.py

注意:每次修改py文件:pyinstaller demo.py后,一定要记得再去demo.spec文件中加上hiddenimports!

因为运行pyinstaller demo.py时,相当于整个文件就更新了,之前修改的.spec文件又是全新的,所以我们要记得再去改,
然后再pyinstaller demo.spec,这样得到的exe就可以顺利执行啦!

**总结:
每次pyinstaller demo.py 都会使整个文件夹“更新”,所以每次记得demo.spec文件的修改,修改后记得再次pyinstaller这个文件;同时,带data的程序记得每次在exe同路径下 放置data文件夹。

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