关于使用Pyinstaller打包生成可执行文件所遇到的问题

受老师委托,写一个表格转换word文档的小程序,并打包发布,前期业务实现倒未遇到太多问题,基本上 可以满足需求,只是最后使用Pyinstaller打包生成exe可执行文件的时候遇到了众多问题,下面主要把这次遇到的问题以及踩到的坑记录一下,免得下次继续踩坑

1 使用Pyinstaller打包软件的基本使用方法

安装好pyinstaller就可以在打包的目录下面执行下面命令

pyinstaller options XXX.py

常用参数介绍 options

  • –icon=图标路径
  • -F 打包成一个exe文件
  • -w 使用窗口,无控制台
  • -c 使用控制台,无窗口
  • -d 打印log信息 到控制台中,用于查看报错信息(使用此参数最好不用-w参数)
  • -D 创建一个目录,里面包含exe以及其他一些依赖性文件
  • pyinstaller -h 来查看参数

2打包成功后运行遇到No module named 'pandas._libs.tslibs.np_datetime’错误

关于使用Pyinstaller打包生成可执行文件所遇到的问题_第1张图片

原因是pandas是c源码,而pyInstaller找不到pandas的代码,就算你是-p /lib/site-packages还是不行。
解决方法:
在./Lib/site-packages/PyInstaller/hooks下,新建一个文件名为hook-pandas.py。写入以下内容并保存。

hiddenimports = ['pandas._libs.tslibs.timedeltas',
'pandas._libs.tslibs.nattype',
'pandas._libs.tslibs.np_datetime',
'pandas._libs.skiplist']

然后这样可能还是不会成功
在打包的时候再修改下命令

pyinstaller --clean --win-private-assemblies -F -w main.py  --hiddenimport=pandas._libs.tslibs.timedeltas

生成后修改spec文件
在specs中修改,然后重新用specs生成exe

hiddenimport=[
"pandas","pandas._libs.tslibs.np_datetime"]

然后pyinstaller -F main.spec就行
具体解决方案参考
此篇博文

即可解决此问题

3 打包文件遇到使用docx库的时候出现错误

关于使用Pyinstaller打包生成可执行文件所遇到的问题_第2张图片
如果要打包那种操作word的文件代码,用pyinstaller工具把使用到python-docx库的脚本打包成exe可执行文件后,双击运行生成的exe文件,报错:

ocx.opc.exceptions.PackageNotFoundError:

解决方案
找到python-docx包安装路径下的一个名为default.docx的文件,

把找到的default.docx文件复制到我的py脚本文件所在的目录下。
修改脚本中创建Document对象的方式:
从原来的创建方式:

document = Document()

修改 为

document = Document(docx=os.path.join(os.getcwd(), 'default.docx'))

再次用pyinstaller工具打包脚本为exe文件

把default.docx文件复制到与生成的exe文件相同的路径下,再次运行exe文件,顺利运行通过,没有再出现之前的报错,问题得到解决。
本解决方案原博文请见
解决word文件打包问题

4有关于 打包出现图片资源的问题

在生成的spec文件中 添加

a.datas += [('bg_image.gif','E:\\excel_to_doc\\image\\bg_image.gif','DATA')]

关于使用Pyinstaller打包生成可执行文件所遇到的问题_第3张图片
即可解决
若运行还报错找不到相关依赖资源文件的话,多半是相对路径的问题,将相关 的资源文件放到与exe文件同级目录下即可。
关于使用Pyinstaller打包生成可执行文件所遇到的问题_第4张图片
基本上 解决此次打包软件所遇到的问题。

你可能感兴趣的:(pythonGUI学习开发)