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的博文!!