카테고리 없음

PyInstaller 빌드 오류 해결: PyQt5와 PyQt6 충돌 문제 해결 방법

idea9329 2025. 2. 8. 14:08
반응형

 

PyInstaller를 사용하여 Python GUI 애플리케이션을 단일 실행 파일(.exe)로 패키징할 때,
PyQt5와 PyQt6 패키지가 동시에 감지되는 문제가 발생할 수 있습니다.
이 문제는 PyInstaller가 한 번에 하나의 Qt 바인딩만 지원하기 때문에 발생합니다.


📌 오류 메시지

Aborting build process due to attempt to collect multiple Qt bindings packages:
attempting to run hook for 'PyQt5', while hook for 'PyQt6' has already been run!
PyInstaller does not support multiple Qt bindings packages in a frozen application.

이 오류 메시지는 PyInstaller가 PyQt6를 먼저 감지했는데, PyQt5도 함께 감지되면서 충돌이 발생한 것입니다.


🔹 해결 방법

아래 방법 중 하나를 사용하여 문제를 해결할 수 있습니다.

✅ 1. PyQt5 제거 (권장)

현재 프로젝트에서 PyQt6를 사용하고 있다면 PyQt5를 제거하는 것이 가장 확실한 해결 방법입니다.

1️⃣ PyQt5 제거

터미널(또는 명령 프롬프트)에서 다음 명령어를 실행합니다:

pip uninstall PyQt5

제거가 완료되었는지 확인하려면 다음 명령을 입력하세요:

pip list

PyQt5가 목록에서 사라졌다면, PyInstaller를 다시 실행하세요:

pyinstaller.exe Main.py --onefile --noconsole

👉 만약 PyQt5를 제거할 수 없는 경우, 아래 방법을 사용하세요.


✅ 2. PyInstaller에서 PyQt5 제외하기

PyQt5를 제거할 수 없다면 PyInstaller 실행 시 PyQt5를 제외하도록 설정할 수 있습니다.

1️⃣ PyInstaller 실행 시 --exclude 옵션 사용

pyinstaller.exe Main.py --onefile --noconsole --exclude-module PyQt5

이렇게 하면 PyInstaller가 PyQt5를 무시하고 빌드를 진행합니다.


✅ 3. .spec 파일 수정 (고급 방법)

이미 Main.spec 파일이 생성된 경우, 이를 수정하여 PyQt5를 제외할 수도 있습니다.

1️⃣ Main.spec 파일 수정

  • Main.spec 파일을 열고 Analysis 부분에 excludes=['PyQt5']를 추가하세요.
a = Analysis(
    ['Main.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=['PyQt5'],  # PyQt5 제외
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)

2️⃣ .spec 파일을 사용하여 빌드

이제 .spec 파일을 사용하여 PyInstaller 빌드를 실행합니다.

pyinstaller Main.spec

🔹 최종 정리

해결 방법설명실행 명령어

1. PyQt5 제거 (권장) PyQt6만 사용하도록 PyQt5를 삭제 pip uninstall PyQt5
2. PyInstaller에서 PyQt5 제외 PyInstaller 실행 시 PyQt5를 제외 pyinstaller Main.py --onefile --noconsole --exclude-module PyQt5
3. .spec 파일 수정 Main.spec 파일을 수정하여 PyQt5 제외 pyinstaller Main.spec

🔹 결론

  • PyQt6를 사용하는 프로젝트라면 PyQt5를 제거하는 것이 가장 깔끔한 해결 방법입니다.
  • 만약 PyQt5를 제거할 수 없다면, PyInstaller 실행 시 --exclude-module PyQt5 옵션을 추가하면 됩니다.
  • .spec 파일을 수정하는 방법도 있지만, 기본적으로 위의 두 방법이 더 쉽고 효과적입니다.

위 방법을 적용한 후 다시 실행해보세요.
문제가 지속되면 오류 메시지와 함께 다시 문의해주세요! 🚀

반응형