pyinstaller打包的程序运行时崩溃

Posted

技术标签:

【中文标题】pyinstaller打包的程序运行时崩溃【英文标题】:Program packaged by pyinstaller crashes when running 【发布时间】:2021-08-04 08:38:27 【问题描述】:

我尝试用pyqt5创建一个命令行程序,并使用pyinstaller对其进行打包。我的打包命令是:pyinstaller --windowed --onefile main.py

但是,输入命令运行后,我的程序崩溃了

如果我使用pyinstaller --windowed main.pypyinstaller --onefile main.py,程序仍然有效

代码如下:

ma​​in.py

import sys
import os
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QPlainTextEdit, QHBoxLayout, QVBoxLayout

class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.window_width, self.window_height = 1200, 1500
        self.setMinimumSize(self.window_width, self.window_height)

        self.setWindowTitle('Command Line App')
        layout = QVBoxLayout()
        self.setLayout(layout)

        self.editorCommand = QPlainTextEdit()
        layout.addWidget(self.editorCommand, 3)

        self.editorOutput = QPlainTextEdit()
        layout.addWidget(self.editorOutput, 7)

        buttonLayout = QHBoxLayout()
        layout.addLayout(buttonLayout)

        self.button_run = QPushButton('&Run Command', clicked=self.runCommand)
        buttonLayout.addWidget(self.button_run)

        self.button_clear = QPushButton('&Clear', clicked=lambda: self.editorOutput.clear())
        buttonLayout.addWidget(self.button_clear)

        self.editorCommand.insertPlainText('dir')

    def runCommand(self):
        command_line = self.editorCommand.toPlainText().strip()
        p = os.popen(command_line)
        if p:
            self.editorOutput.clear()
            output = p.read()
            self.editorOutput.insertPlainText(output)


if __name__ == '__main__':

    app = QApplication(sys.argv)
    app.setStyleSheet('''
        QWidget 
            font-size: 30px;
        
    ''')
    
    myApp = MyApp()
    myApp.show()

    try:
        sys.exit(app.exec_())
    except SystemExit:
        print('Closing Window...')

【问题讨论】:

【参考方案1】:

尝试以这种方式运行 PyInstaller:

pyinstaller -F -w my_file.py

【讨论】:

以上是关于pyinstaller打包的程序运行时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行

由于窗口问题,Kivy 应用程序在使用 pyinstaller 打包后崩溃

python 中 使用 pyinstaller 打包的exe程序如何调用外部模块?

pyinstaller打包exe后给别人总运行不了,怎么破

python打包后的程序在window下运行360报毒

MacOS 10.14.6 更新后 Tkinter 导致计算机崩溃