Pyinstaller可执行文件无法正常工作

时间:2017-11-19 01:40:59

标签: python-3.x pandas pyqt5 pyinstaller

我一直在使用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_())

1 个答案:

答案 0 :(得分:0)

您的应用没有运行,因为您的应用中存在错误。您没有向我们提供堆栈跟踪,以便我们确定错误的位置。您没有告诉我们您是如何调用pyinstaller来构建应用程序的。

请按照此建议获取堆栈跟踪:https://github.com/pyinstaller/pyinstaller/issues/2015#issuecomment-222408252

将您的应用程序作为.exe运行将发生在与脚本不同的环境中,因此导入和动态链接将以不同的方式发生。您可能会发现,根据过去的成功开始使用您知道可行的全新测试脚本,然后从失败的脚本中逐个引入新功能,直到遇到破坏事物的项目。我们目前模糊的问题描述使得很难更具体,因为我们无法看到你所看到的。花一点时间进行调试应该可以快速揭示应用程序的麻烦部分。