Pyinstaller win32 qt 应用程序不工作

Posted

技术标签:

【中文标题】Pyinstaller win32 qt 应用程序不工作【英文标题】:Pyinstaller win32 qt app not working 【发布时间】:2018-07-17 10:39:34 【问题描述】:

我有 2 个具有 win32win64 的虚拟机。我使用 PyQt5 构建程序并使用 PyInstaller(3.3.1) 打包它,使用以下命令:

pyinstaller updater.py --noconsole --onefile -i icons/icon.ico

当我在 win64 机器上执行此操作时,它工作正常。程序工作。但是当我在 win32 机器上执行相同操作时,我生成的.exe 文件开始需要管理员权限,即使在确认应用程序崩溃后也是如此。我检查了这个问题:Why does my pyinstaller created executable require admin privileges?

并重命名应用程序,但它仍然崩溃。什么会导致这种情况?为什么在 win32 防御者上阻止了我的应用程序,或者原因可能不在防御者中。

class MainWindow(QtWidgets.QMainWindow):

    def __init__(self):
        super(MainWindow, self).__init__(flags=QtCore.Qt.Dialog)
        self.progress_bar = QtWidgets.QProgressBar()
        self.progress_label = QtWidgets.QLabel()
        central_widget = QtWidgets.QWidget(flags=QtCore.Qt.Widget)
        central_layout = QtWidgets.QVBoxLayout()
        central_layout.addWidget(self.progress_bar)
        central_layout.addWidget(self.progress_label, alignment=QtCore.Qt.AlignLeft)
        central_widget.setLayout(central_layout)
        self.setCentralWidget(central_widget)
        self.progress_label.setStyleSheet('color: grey')


def main():
    application = QtWidgets.QApplication(sys.argv)

    main_window = MainWindow()
    main_window.setFixedSize(480, 120)
    main_window.show()

    sys.exit(application.exec_())


if __name__ == '__main__':
    main()

requirements.txt:

PyInstaller==3.3.1
PyQt5==5.10.1
requests==2.18.4

【问题讨论】:

【参考方案1】:

问题是因为我使用 python 3.7,但 PyIntaller 还不支持 3.7。使用 3.6 可以正常工作,但仍需询问管理员权限...

【讨论】:

以上是关于Pyinstaller win32 qt 应用程序不工作的主要内容,如果未能解决你的问题,请参考以下文章

pyinstaller在64位系统下打包32位程序

如何在win7 64位系统下用pyinstaller打包python代码成exe

如何在win7 64位系统下用pyinstaller打包python代码成exe

Pyinstaller打包文件

如何使用pyinstaller打包32位的exe

如何使用pyinstaller打包32位的exe