我正在尝试将此python文件转换为exe,但出现错误

时间:2020-09-15 15:26:48

标签: python-3.x pyqt5 subprocess pyinstaller

我正在尝试将此pyQt5程序转换为exe以在linux上执行它。但是我遇到了一些错误。我已经尝试使用pyinstaller以及auto-py-to-exe。

from PyQt5 import QtCore, QtGui, QtWidgets
import subprocess

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(948, 712)
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(330, 120, 281, 51))
        font = QtGui.QFont()
        font.setPointSize(28)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setObjectName("pushButton")
        self.pushButton.clicked.connect(self.start_server)
        self.pushButton.setGeometry(QtCore.QRect(330, 270, 261, 51))
        font = QtGui.QFont()
        font.setPointSize(24)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.label.setText(_translate("Dialog", "Start Program"))
        self.pushButton.setText(_translate("Dialog", "Press to start"))

    def start_server(self):
        subprocess.Popen(["OutlierDetectionPythonToExe/bin/python", "notFinal_UI_DetectOutliers.py"])
        self.pushButton.setDisabled('True')

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

我收到此错误。...

Traceback (most recent call last):
  File "src/gevent/greenlet.py", line 854, in gevent._gevent_cgreenlet.Greenlet.run
  File "/home/gaurav/.local/lib/python3.8/site-packages/eel/__init__.py", line 259, in _process_message
    return_val = _exposed_functions[message['name']](*message['args'])
  File "/home/gaurav/.local/lib/python3.8/site-packages/auto_py_to_exe/ui.py", line 101, in export_configuration
    file_path = dialogs.ask_file_save_location('json')
  File "/home/gaurav/.local/lib/python3.8/site-packages/auto_py_to_exe/dialogs.py", line 95, in ask_file_save_location
    return file_path if file_path.endswith('.json') else file_path + '.json'
AttributeError: 'tuple' object has no attribute 'endswith'
2020-09-15T14:59:46Z <Greenlet at 0x7f07ed589150: _process_message({'call': 5.353588735350904, 'name': 'export_config, <geventwebsocket.websocket.WebSocket object at 0x7)> failed with AttributeError

1 个答案:

答案 0 :(得分:0)

PyInstaller doesn't support 3.8 yet;使该补丁正常工作的补丁已应用于主干,但在4.1版本(当前版本为4.0)发布之前不会成为PyInstaller的一部分。使用较旧的Python,或等待4.1版本发布。