pyinstaller打包程序时的坑

【转换】png-to-ico

pyinstaller

一、安装pyinstaller

pip install pyinstaller

二、切换到工作目录

cd xxxxxxxxxxx

三、打包命令

pyinstaller [项目启动文件]

pyinstaller,只需要在工作目录中输入打包命令即可。最后会生成build和dist文件夹,启动文件在dist文件夹下。

其他参数(按需求选择):

  • -F 表示在dist文件夹下只生成单个可执行文件(内部包含所有依赖),不加默认会在dist生成一大堆依赖文件+可执行文件。
  • -D 与-F相反用法
  • -W 表示去掉控制台窗口,如果你的程序是有界面的,可以不写这个参数。但是测试情况下建议先加上这个参数,因为如果打包不成功,运行时报错信息会在控制台上输出,没有控制台就看不到报错信息。
  • -c 表示去掉窗框,使用控制台
  • -p 表示自己定义需要加载的类路径,项目中包含多个自建模块的时候需要加上 -p aaa.py -p bbb.py -p ccc.py
  • -i 表示可执行文件的图标,后面跟图标的路径
  • –hidden-import 后面跟模块名如queue,用于告诉打包程序某个模块我用不着你不用打包进去
pyinstaller报错解决
  1. 执行打包命令时报错IndexError: tuple index out of range
  • 原因:官网目前的版本是3.2.1 只支持到python3.5 ,高版本的python尚不支持,
  • 解决方法:网上有大神提供了完善版的代码——官网源码里有 https://github.com/pyinstaller/pyinstaller 替换你python目录下的\Lib\site-packages\PyInstaller 即可 这样就支持python3.6了 不过是开发版,可能还不完善。
  1. 执行打包命令时报错ImportError: No module named 'queue'
  • 原因:尚不清楚
  • 解决方法:如果该模块你用不到,可以在执行打包命令时用–hidden-import不打包进去。如果程序中需要该模块,在主文件最上面写上improt queue
  1. 打包命令执行成功,但双击可执行程序弹出报错窗口failed to excute script xxx
  • 原因:打包时内部缺少了某个依赖(需要pip安装),这时需要看看控制台打印了什么报错信息,打包时加了-w参数的请再打包一次记得去掉-w
  • 现象:基本都是在控制台上发现报错 No module named ‘xxxxx’,如No module named 'queue’或者ModuleNotFoundError: No module named ‘PyQt5.sip’
    解决方法:同2,如果该模块你用不到,可以在执行打包命令时用–hidden-import不打包进去。如果程序中需要该模块,在主文件最上面写上improt xxxxx。如import queue或import PyQt5.sip
  1. 打包成功后被识别成病毒删除
  • 加上-i 设置icon可以解决
发布了36 篇原创文章 · 获赞 3 · 访问量 1748

猜你喜欢

转载自blog.csdn.net/qq_38689395/article/details/102260263