各位大佬,我用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
細節就是上面這些了,懇請各位大俠幫忙看看問題出在哪里?該如何修改,謝謝!
uj5u.com熱心網友回復:
我已經自己解決了uj5u.com熱心網友回復:
How?please.uj5u.com熱心網友回復:
怎么解決的呀uj5u.com熱心網友回復:
import sys, os試試這個,引入pyqt5之前
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 *
import sys, os
if hasattr(sys, 'frozen'):
os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']
uj5u.com熱心網友回復:
我也遇到這個問題,用樓上的辦法解決了
感謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/267667.html
