运行我使用任何IDLE或file.py在PyQt5中创建的GUI应用程序,但是,当我使用Pyinstaller将.py转换为.exe时,它运行完美。 由于某种原因,每次我尝试运行.exe文件时,都会出现错误,并弹出一个小命令窗口,并显示错误消息,然后立即消失,并在错误关闭之前对错误进行了截图。任何想法预先感谢
我尝试为pyinstaller执行不同的命令,但是没有运气。
<pyinstaller filename -F >
<pyinstaller filename -onefile >
<pyinstaller filename >
这是一个超过900行的应用程序,我无法全部上传,但我认为是根据错误的第一行。 发生错误,因此这里是代码行。 我认为问题出在导入模块之内。
from PyQt5.QtWidgets import QWidget
from PyQt5 import QtCore, QtGui, QtWidgets
from datetime import datetime
import time
import os, sys #importing system modules
class Ui_MyTrophiesWindow(object):
class save_txt_file(QWidget):
def GetSaveFile(self):
path = QFileDialog.getSaveFileName(self,"Save MyTrophies.txt here", "MyTrophies", "*.txt")
working_path = os.path.abspath(__file__)[0:-13]
file = open(str(working_path) + "Txtpath.dat", "w+")
for i in path:
file.write(str(i))
file.close()
答案 0 :(得分:1)
很常见的是,有时PyInstaller不能识别所有Qt5依赖项,尤其是QT核心DLL。一种简单的方法是只在当前的Python路径上找到该文件,并在PyInstaller中使用add-data
标志来提供该文件。另外,我建议您不要将upx
与PyQt一起使用,因为它可能会损坏某些DLL:
pyinstaller --noupx -F --add-data "<Python_path>/Lib/site-packages/PyQt5/Qt/bin/Qt5Core.dll;./PyQt5/Qt/bin" script.py
为验证答案,假设以下示例:
import traceback
import os
import sys
def func():
from PyQt5.QtWidgets import QWidget
from PyQt5 import QtCore, QtGui, QtWidgets
try:
if getattr(sys, 'frozen', False):
print(sys._MEIPASS)
func()
print("Import OK!")
except Exception:
traceback.print_exc()
input()
运行可执行文件后,您将看到Pyinstaller的路径(类似C:\Users\User\AppData\Local\Temp\_MEI90202
),转到此路径并搜索Qt5Core.dll
,然后检查其是否存在。
答案 1 :(得分:1)
我看过您的错误,据我说,我认为您需要(重新)安装Qt5core.dll模块并将其添加到site-package / PyQt5 / init .py路径中。您可以在此处下载dll文件:
http://www.telecharger-dll.fr/dll-Qt5Core.dll.html
晚上好
答案 2 :(得分:1)
请确保该应用程序的所有项目都位于正确的文件夹中。让我举个例子,发生在我几天前:
我有一个应用程序,该应用程序的文件夹名为“ options”,具有3个文件(我的按钮ui和.ini文件2个图标)。当我创建程序的pyinstaller版本时,我假定,它将以某种方式复制这些文件并将它们打包在--onefile文件或dist文件夹中(如果未使用--onefile命令)。不,不是。 挠了几个小时之后,我只是从源文件中复制了options文件夹,并将其粘贴到我的--onefile文件旁边(或dist文件夹中)。
之后,我的应用程序正常运行。因此,请确保它在正确的文件夹中具有所需的所有文件。