我一直在使用pyinstaller来制作.exe退出文件很长时间了。我已经制作了一些.exe文件并将其分发到所有作品中
今天,我创建了一个应用程序来从多个.html文件中读取表并创建一个合并的Excel文件。
该脚本按预期工作正常,但我无法将该代码转换为.exe文件。我安装了pyinstaller和所有依赖项,并且能够将其他代码转换为.exe。只是这个不起作用
请检查下面的代码
import sys
import os
import pandas as pd
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit, QFileDialog
from PyQt5.QtGui import QIcon
class Window(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.init_ui(self)
def init_ui(self,Consolidate):
Consolidate.setObjectName("Consolidate")
Consolidate.resize(410, 300)
self.progressBar = QtWidgets.QProgressBar(Consolidate)
self.progressBar.setGeometry(QtCore.QRect(20, 220, 381, 23))
self.progressBar.setProperty("value", 0)
self.progressBar.setObjectName("progressBar")
self.pushButton = QtWidgets.QPushButton(Consolidate)
self.pushButton.setGeometry(QtCore.QRect(320, 30, 51, 21))
self.pushButton.setObjectName("browse")
self.lineEdit = QtWidgets.QLineEdit(Consolidate)
self.lineEdit.setGeometry(QtCore.QRect(20, 30, 291, 21))
self.lineEdit.setObjectName("lineEdit")
self.pushButton_2 = QtWidgets.QPushButton(Consolidate)
self.pushButton_2.setGeometry(QtCore.QRect(140, 250, 131, 41))
self.pushButton_2.setObjectName("go")
self.textBrowser_2 = QtWidgets.QTextEdit(Consolidate)
self.textBrowser_2.setGeometry(QtCore.QRect(20, 70, 351, 141))
self.textBrowser_2.setObjectName("textBrowser_2")
self.retranslateUi(Consolidate)
QtCore.QMetaObject.connectSlotsByName(Consolidate)
def retranslateUi(self, Consolidate):
_translate = QtCore.QCoreApplication.translate
Consolidate.setWindowTitle(_translate("Consolidate", "Consolidate Excel"))
self.pushButton.setText(_translate("Consolidate", "Browse"))
self.lineEdit.setPlaceholderText(_translate("Consolidate", "Please Browse The Target Folder"))
self.pushButton_2.setText(_translate("Consolidate", "Go"))
self.pushButton.clicked.connect(self.fname)
self.pushButton_2.clicked.connect(self.go)
folder = str()
def fname(self):
global folder
file = str(QFileDialog.getExistingDirectory(self, "Select Folder"))
folder = (file)
print (folder)
self.lineEdit.setText(folder)
def go(self):
import pandas as pd
dflist = list()
for file in os.listdir(folder):
path = os.path.join(folder, file)
if os.path.isdir(path) or file == "QtoolAssigned.xlsx":
continue
else:
print(file)
self.textBrowser_2.append(file[7:-28])
df = pd.read_html(path)
df = df[0].dropna(axis=0, thresh=4)
df['Team Name'] = str(file[7:-28])
dflist.append(df)
concatdf = pd.concat(dflist,axis=0)
concatdf.to_excel(folder+'\'+'QtoolAssigned.xlsx', index=None)
self.progressBar.setProperty("value",100)
if __name__=='__main__':
app = QtWidgets.QApplication(sys.argv)
ex = Window()
ex.show()
app.exec_()
sys.exit(app.exec_())
您的应用未运行,因为您的应用存在错误。您没有向我们提供堆栈跟踪,以便我们确定错误的位置。您没有告诉我们您如何调用 pyinstaller 来构建应用程序。
请遵循以下建议获取堆栈跟踪:https://github.com/pyinstaller/pyinstaller/issues/2015#issuecomment-222408252
将应用程序作为.exe运行将在与脚本不同的环境中进行,因此导入和动态链接将以不同的方式发生。您可能会发现,根据过去的成功,从一个您知道有效的全新测试脚本开始,然后从失败的脚本中逐个提取新功能,直到遇到破坏事物的项目,这很有帮助。我们目前模糊的问题描述使得很难更具体,因为我们看不到你所看到的。花一点时间调试应该很快就会揭示应用中麻烦的部分。