第一次使用 PyInstaller踩坑

1.Pyinstaller 使用简介

  • -F:产生一个文件用于部署
  • -D:产生一个目录用于部署 (默认)
  • -a:不包含编码.在支持Unicode的python版本上默认包含所有的编码.
  • -d:产生debug版本的可执行文件
  • -w:使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)
  • -c:使用控制台子系统执行(默认)(只对Windows有效)
  • -X:对.exe文件进行压缩,不过是用这个选项之前需要下载 upx,下载点这,下载之后将压缩包中的 upx.exe 放在和python.exe同目录下即可;
  • -s:可执行文件和共享库将run through strip.注意Cygwin的strip往往使普通的win32 Dll无法使用.
  • -o:指定spec文件的生成目录,如果没有指定,而且当前目录是PyInstaller的根目录,会自动创建一个用于输出(spec和生成的可执行文件)的目录.如果没有指定,而当前目录不是PyInstaller的根目录,则会输出到当前的目录下
  • -p:设置导入路径(和使用PYTHONPATH效果相似).可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录.也可以使用多个-p参数来设置多个导入路径
  • -i:将file.ico添加为可执行文件的资源(只对Windows系统有效)
  • -n NAME:可选的项目(产生的spec的)名字.如果省略,第一个脚本的主文件名将作为spec的名字

2.出现 **“failed to excute script pyi_rth_qt4plugins”** 或者 **“failed to excute script pyi_rth_qt5plugins“** 错误

  • 如果你的电脑了装了多个PyQt版本,或者即使你已经通过 pip uninstall PyQt4,但是若Python 的site-packages 下依然存在 PyQt4 目录则运行打包好的程序会出现**“failed to excute script pyi_rth_qt4plugins”**错误;
  • 若电脑里已经把PyQt4 清理干净了,且运行打包好的程序出现了 **“failed to excute script pyi_rth_qt5plugins”**错误,则可以在打包时这样写:
    pyinstaller --paths C:/.../Python/Python35/Lib/site-packages/PyQt5/Qt/bin -F -w xxxx.py
    其中PyQt5/Qt/bin 的路径视自己情况而定!

3.出现 “failed to execute script XXXX” 错误

当使用pyinstaller 打包程序时,命令行窗口显示

在这里插入图片描述
但是双击执行程序是却出现 “failed to execute script XXXX”这样的错误,可以试用一下方法查看错误:
执行 pyinstaller -F -w xxxx.py 之后,再执行 pyinstaller -D xxxx.py 进行Debug版的打包,会在 dist 目录下得到一个目录文件,通过命令行执行.exe文件就会提示程序不能运行的错误了!

出现 ImportError No Module named 'setuptools._vender' 以及 AttritbuteError ‘str’ object has no attributes 'items'

参考博文:pyinstaller打包程序时遇到的一系列问题:AttributeError、No module named和PyQt5
感谢博主黑眼豆豆phj的博文!!

你可能感兴趣的:(python)