[Pyqt5] "Failed to execute script" (경로문제 X) 에러 해결하기 (How to Fix Failed to execute script Error?)

2021. 7. 4. 18:28GUI Programming/PyQT5 (GUI Programming)

반응형

[ Pyqt5 ]

이번 포스팅은 Pyqt5로 개발한 코드(.py)를 Pyinstaller를 이용해 exe파일로 변환한 후,

실행 하였을때 생기는 "Failed to execute script" 에러 해결방법에 대해 포스팅 하도록 하겠습니다.

 

"Failed to execute script"에 대해 구글링을 하다보면 경로지정 문제가 많이 언급이 되지만,

이번 포스팅은 다른 경우에 대해서 포스팅을 해보도록하겠습니다.


테스트는 아래 코드로 진행 하였습니다.

( Pyqt5 첫번째 포스팅에 있는 코드에서 pynput만 import 해주었습니다. )

from PyQt5 import QtCore, QtWidgets
import pynput

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        MainWindow.setCentralWidget(self.centralwidget)

        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")

        MainWindow.setMenuBar(self.menubar)

        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

if __name__=="__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()

    sys.exit(app.exec_())

문제

"Failed to execute script" 에러는 코드로 동작을 시켰을 경우, 아래와 같이 정상적으로 윈도우가 나옵니다.

 

하지만 이 코드를 exe로 변환 후 exe파일을 실행시켜보면 아래와 같이 "Failed to execute script" 에러 문구가 뜹니다.


해결

사실 이 에러는 엄청 간단한 문제 입니다.

( 하지만 자료가 없어서 해결하는데 2주가 걸렸습니다. 해결도 우연히;; )

 

간단하게 아래 코드가 문제입니다.

import pynput

제가 보았을때는 .py파일에서 .exe로 변환하는 과정에서 pyqt5와 pynput이 충돌이 일어나 생긴 에러 같습니다.

 

그래서 pynput을 다운그레이드 하시면 이제 pynput을 import 해도 pyqt5와 충돌이 일어나지 않을겁니다.

pip uninstall pynput
pip install pynput==1.6.8

 

 

반응형