안녕하세요

디시는 처음입니다.


프로그래밍에 대한 여러 포럼은 대부분 외국어사이트인지라 조금 자세한 설명을 위해 여기에 질문을 드리고자 찾아왔습니다.

최근 PyQt5와 Qt Designer를 이용한 UI기반 프로그램을 만들었는데

인터페이스의 변경과 특정 웹 호출을 위하여 PyQt5.QtWidgets.QWebengineView 모듈을 이용하였습니다.


여기서 문제가 발생합니다.

visual studio code 또는 그냥 파워쉘에서 python [파일명.py] 등으로 실행시 지극히 정상적으로 실행되는걸 분명 확인했는데

pyinstaller로 컴파일 할경우 정상적으로 파일이 컴파일 되지만 exe파일은 실행자체가 되지 않으며

해당 [파일명.exe] 파일을 visual studio 2019로 디버깅 해보면

특정 .dll파일에 대한 값전달중 치명적 오류로 종료가 됩니다.


이에 pyinstaller 전달인자로 -d 'all' 또는 -d 'imports' 를 추가해서 실행시 마찬가지로 파일이 정상적으로 컴파일 되지만

exe파일을 실행 할 경우 failed to execute script pyiboot01()_bootstrap 이라는 오류를 메세지박스로 return 한뒤 종료됩니다.


레딧과 깃허브 등에서도 qt5의 webengineview모듈과 pyinstaller의 충돌등이 많이 보고되고 있으나

해당 포럼들이 갖고있는 쓰레드의 쓰레드의 쓰레드 등등을 찾아들어가거나 번역하여 보는것에 한계가 있어 도움을 구하고자 글을 남겼습니다.



다음은 import된 라이브러리 , 모듈 및 해당 모듈이 사용된 구문 입니다.

import sys
import requests
import bs4
import PyQt5
from bs4 import BeautifulSoup
from PyQt5.QtWidgets import *
from PyQt5 import uic
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5 import QtGui


form_class = uic.loadUiType('contentsUIfile.ui')[0]
class windowclass(QMainWindow, form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
self.setWindowIcon(QtGui.QIcon('contents1_6WW_icon.ico'))

if __name__ == '__main__':
app = QApplication(sys.argv)
first_window = windowclass()
first_window.show()
app.exec()

다음은 pyinstaller를 통한 컴파일을 주관하는 spec파일입니다.

# -*- mode: python ; coding: utf-8 -*-


block_cipher = None



a = Analysis(['2019.py'],

pathex=['D:대성프로젝트9nCoV'],

binaries=[],

datas=[('contents', 'contents')],

hiddenimports=['PyQt5.sip'],

hookspath=[],

runtime_hooks=[],

excludes=[],

win_no_prefer_redirects=False,

win_private_assemblies=False,

cipher=block_cipher,

noarchive=True)

pyz = PYZ(a.pure, a.zipped_data,

cipher=block_cipher)

exe = EXE(pyz,

a.scripts,

[('v', None, 'OPTION')],

exclude_binaries=True,

name='2019',

debug=True,

bootloader_ignore_signals=False,

strip=False,

upx=True,

console=False , icon='contents\\\\1_6WW_icon.ico')

coll = COLLECT(exe,

a.binaries,

a.zipfiles,

a.datas,

strip=False,

upx=True,

upx_exclude=[],

name='2019')


python버전은 3.7.4(아나콘다)와 3.7.5(정식)의 버전입니다.

pyinstaller의 버전은 3.6입니다.


이에 대한 해결책을 아시거나 의심가는 부분이 있으시다면 꼭 댓글로 남겨주시면 감사하겠습니다.