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.py
或pyinstaller --onefile main.py
,程序仍然有效
代码如下:
main.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 打包后崩溃