Pyinstaller win32 qt 应用程序不工作
Posted
技术标签:
【中文标题】Pyinstaller win32 qt 应用程序不工作【英文标题】:Pyinstaller win32 qt app not working 【发布时间】:2018-07-17 10:39:34 【问题描述】:我有 2 个具有 win32 和 win64 的虚拟机。我使用 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 应用程序不工作的主要内容,如果未能解决你的问题,请参考以下文章
如何在win7 64位系统下用pyinstaller打包python代码成exe