求助:用pyinstaller将pyqt5程序打包为exe时报错Failed to execute script

sct 2018-08-08 03:53:29
各位大佬,我用pyinstaller将一个非常简单的pyqt5程序打包为exe后运行报错,Failed to execute script,运行不了。尝试了网上很多方法都不管用,故写在这里请各位帮帮忙,看应该如何解决,谢谢。细节如下:

1.我的开发环境
Win10 64位,Anaconda(Anaconda3-5.2.0-Windows-x86_64,conda 4.4.10,Python3.6.4),PyCharm(pycharm-community-2018.2),pyinstaller(3.3.1)。

系统环境变量:
E:\develop\python\Anaconda3
E:\develop\python\Anaconda3\Library\mingw-w64\bin
E:\develop\python\Anaconda3\Library\usr\bin
E:\develop\python\Anaconda3\Library\bin
E:\develop\python\Anaconda3\Scripts

2.PyCharm中External Tools中pyinstaller的设置:


(也曾经试过按照网上说的将-F -w $FileNameWithoutExtension$.py改为-F -w --hidden-import=queue $FileNameWithoutExtension$.py,但也还是出错)

3.使用pyinstaller将一个简单的tkinter 程序打包为exe,打包成功,运行成功。

GUI3.py的代码如下:
from tkinter import *
#初始化Tk()
myWindow = Tk()
#进入消息循环
myWindow.mainloop()

打包成功:



运行成功:

说明pyinstaller的安装和设置应该没问题。

4.写了一个简单的pyqt5程序,在PyCharm中直接运行时是成功的:

GUI4.py代码如下:
import sys
from PyQt5 import QtWidgets, QtCore
app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
widget.resize(720, 720)
widget.setWindowTitle("hello,pyqt5")
widget.show()
sys.exit(app.exec_())

运行结果:


5.将上述pyqt5程序用pyinstaller打包为exe,打包成功:


上图中红色部分的信息复制如下:

E:\develop\python\Anaconda3\Scripts\pyinstaller.exe -F -w GUI4.py
132 INFO: PyInstaller: 3.3.1
132 INFO: Python: 3.6.4
133 INFO: Platform: Windows-10-10.0.15063-SP0
133 INFO: wrote E:\PythonWork\PycharmProjects\GUI4\GUI4.spec
136 INFO: UPX is not available.
138 INFO: Extending PYTHONPATH with paths
['E:\\PythonWork\\PycharmProjects\\GUI4',
'E:\\PythonWork\\PycharmProjects\\GUI4']
138 INFO: checking Analysis
138 INFO: Building Analysis because out00-Analysis.toc is non existent
138 INFO: Initializing module dependency graph...
141 INFO: Initializing module graph hooks...
142 INFO: Analyzing base_library.zip ...
3837 INFO: running Analysis out00-Analysis.toc
3839 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable
required by E:\develop\python\Anaconda3\python.exe
4527 INFO: Caching module hooks...
4531 INFO: Analyzing E:\PythonWork\PycharmProjects\GUI4\GUI4.py
4618 INFO: Loading module hooks...
4618 INFO: Loading module hook "hook-encodings.py"...
4706 INFO: Loading module hook "hook-pydoc.py"...
4708 INFO: Loading module hook "hook-PyQt5.py"...
4711 INFO: Loading module hook "hook-PyQt5.Qt.py"...
4712 INFO: Loading module hook "hook-PyQt5.QtCore.py"...
4798 INFO: Loading module hook "hook-PyQt5.QtGui.py"...
5276 INFO: Loading module hook "hook-PyQt5.QtPrintSupport.py"...
5386 INFO: Loading module hook "hook-PyQt5.QtWidgets.py"...
5392 INFO: Loading module hook "hook-xml.py"...
5685 INFO: Looking for ctypes DLLs
5685 INFO: Analyzing run-time hooks ...
5687 INFO: Including run-time hook 'pyi_rth_qt5.py'
5691 INFO: Looking for dynamic libraries
6604 INFO: Looking for eggs
6604 INFO: Using Python library E:\develop\python\Anaconda3\python36.dll
6604 INFO: Found binding redirects:
[]
6607 INFO: Warnings written to E:\PythonWork\PycharmProjects\GUI4\build\GUI4\warnGUI4.txt
6649 INFO: Graph cross-reference written to E:\PythonWork\PycharmProjects\GUI4\build\GUI4\xref-GUI4.html
6660 INFO: checking PYZ
6660 INFO: Building PYZ because out00-PYZ.toc is non existent
6660 INFO: Building PYZ (ZlibArchive) E:\PythonWork\PycharmProjects\GUI4\build\GUI4\out00-PYZ.pyz
7264 INFO: Building PYZ (ZlibArchive) E:\PythonWork\PycharmProjects\GUI4\build\GUI4\out00-PYZ.pyz completed successfully.
7268 INFO: checking PKG
7268 INFO: Building PKG because out00-PKG.toc is non existent
7268 INFO: Building PKG (CArchive) out00-PKG.pkg
14986 INFO: Building PKG (CArchive) out00-PKG.pkg completed successfully.
14989 INFO: Bootloader E:\develop\python\Anaconda3\lib\site-packages\pyinstaller-3.3.1-py3.6.egg\PyInstaller\bootloader\Windows-64bit\runw.exe
14990 INFO: checking EXE
14990 INFO: Building EXE because out00-EXE.toc is non existent
14990 INFO: Building EXE from out00-EXE.toc
14990 INFO: Appending archive to EXE E:\PythonWork\PycharmProjects\GUI4\dist\GUI4.exe
15017 INFO: Building EXE from out00-EXE.toc completed successfully.

Process finished with exit code 0

6.但是运行exe时报错了:


warnGUI4.txt中的内容如下:

missing module named resource - imported by posix, E:\PythonWork\PycharmProjects\GUI4\GUI4.py
missing module named posix - imported by os, E:\PythonWork\PycharmProjects\GUI4\GUI4.py
missing module named _posixsubprocess - imported by subprocess, E:\PythonWork\PycharmProjects\GUI4\GUI4.py
missing module named org - imported by pickle, E:\PythonWork\PycharmProjects\GUI4\GUI4.py
missing module named readline - imported by cmd, code, pdb, E:\PythonWork\PycharmProjects\GUI4\GUI4.py
excluded module named _frozen_importlib - imported by importlib, importlib.abc, E:\PythonWork\PycharmProjects\GUI4\GUI4.py
missing module named _frozen_importlib_external - imported by importlib._bootstrap, importlib, importlib.abc, E:\PythonWork\PycharmProjects\GUI4\GUI4.py
missing module named _winreg - imported by platform, E:\PythonWork\PycharmProjects\GUI4\GUI4.py
missing module named _scproxy - imported by urllib.request
missing module named java - imported by platform, E:\PythonWork\PycharmProjects\GUI4\GUI4.py
missing module named 'java.lang' - imported by platform, E:\PythonWork\PycharmProjects\GUI4\GUI4.py, xml.sax._exceptions
missing module named vms_lib - imported by platform, E:\PythonWork\PycharmProjects\GUI4\GUI4.py
missing module named termios - imported by tty, E:\PythonWork\PycharmProjects\GUI4\GUI4.py, getpass
missing module named grp - imported by shutil, tarfile, E:\PythonWork\PycharmProjects\GUI4\GUI4.py
missing module named 'org.python' - imported by copy, E:\PythonWork\PycharmProjects\GUI4\GUI4.py, xml.sax
missing module named pwd - imported by posixpath, shutil, tarfile, http.server, webbrowser, E:\PythonWork\PycharmProjects\GUI4\GUI4.py, netrc, getpass
missing module named _dummy_threading - imported by dummy_threading, E:\PythonWork\PycharmProjects\GUI4\GUI4.py

细节就是上面这些了,恳请各位大侠帮忙看看问题出在哪里?该如何修改,谢谢!
...全文
1827 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
杢奀 2021-03-10
  • 打赏
  • 举报
回复
用7楼的办法也没用解决,,
rong81590509 2019-09-21
  • 打赏
  • 举报
回复
我也遇到这个问题,用楼上的办法解决了感谢!
曾孓 2019-09-05
  • 打赏
  • 举报
回复
import sys, os
if hasattr(sys, 'frozen'):
    os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
试试这个,引入pyqt5之前
import sys, os
if hasattr(sys, 'frozen'):
    os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']
是的就是Daisy 2019-08-22
  • 打赏
  • 举报
回复
怎么解决的呀
Naraku4LP 2018-08-17
  • 打赏
  • 举报
回复
How?please.
sct 2018-08-08
  • 打赏
  • 举报
回复
我已经自己解决了

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧