试图使用“ pyinstaller <scriptname.py>”并得到“ TypeError:需要整数(获取类型字节)”

оле*_*гов 3 python pyqt pyinstaller python-3.x pyqt5

我想通过python将一个简单的yes / no消息框创建为一个可执行文件。使用pyqt5并尝试使用pyinstaller创建可执行文件。

TypeError: an integer is required (got type bytes).
Run Code Online (Sandbox Code Playgroud)

使用命令后 pyinstaller <scriptname.py>

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox , QDesktopWidget
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def center(self):
        # geometry of the main window
        qr = self.frameGeometry()

        # center point of screen
        cp = QDesktopWidget().availableGeometry().center()

        # move rectangle's center point to screen's center point
        qr.moveCenter(cp)

        # top left of rectangle becomes top left of window centering it
        self.move(qr.topLeft())
    def initUI(self):

        self.center()

        buttonReply = QMessageBox.question(self, 'PyQt5 message', "Do you like PyQt5?",
                                           QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel, QMessageBox.Cancel)
        if buttonReply == QMessageBox.Yes:
            print('Yes clicked.')
        if buttonReply == QMessageBox.No:
            print('No clicked.')
        if buttonReply == QMessageBox.Cancel:
            print('Cancel')

        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

小智 6

我找到了答案在这里在别人的评论。

尝试使用与python 3.8兼容的最新版本。

pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz
Run Code Online (Sandbox Code Playgroud)

这个解决方案对我有用