증상
Nuke 16 이상을 실행할 때 PySide2를 사용하는 사용자 정의 Python 코드가 있는 경우 플러그인이 실패하여 실행 시 오류가 발생합니다.
명령 프롬프트나 터미널로 실행하는 경우 다음과 같은 오류가 표시됩니다. ModuleNotFoundError: No module named 'PySide2' .
원인
Nuke 16의 VFX 참조 플랫폼 2024 업데이트로 PySide 라이브러리가 PySide6으로 업데이트되었습니다. 즉, PySide 모듈의 이름을 변경하여 가져올 수 있습니다.
이는 Nuke 11이 VFX Reference Platform 2017 업데이트와 함께 PySide에서 PySide2로 이전되었을 때와 유사합니다. 자세한 내용은 다음 문서에서 확인할 수 있습니다. Q100398: Nuke 11+에서 PySide Python 스크립트 사용 시 발생하는 문제 해결 방법
해결
이 문제를 해결하려면 PySide6에서 작동하도록 코드를 업데이트해야 합니다.
많은 경우 다음을 대체할 수 있습니다.
import PySide2
와 함께:
import PySide6
PySide에서 PySide2로 업그레이드한 것과 달리 대규모 모듈 변경 사항이 없으므로 대부분의 문제가 해결될 것입니다.
사용자에게 영향을 미칠 수 있는 주목할 만한 변경 사항 중 하나는 QAction 클래스가 PySide2.QtWidgets 에서 PySide6.QtGui 로 이동했다는 것입니다. 이 클래스는 Nuke UI 내의 메뉴 작업에 사용됩니다.
영향을 받는 모듈이나 함수를 사용하는 경우, 코드에서 수정해야 할 다른 변경 사항도 있을 수 있습니다. 이에 대한 자세한 내용은 Qt for Pythons 웹사이트( https://doc.qt.io/qtforpython-6/faq/porting_from2.html )에서 확인할 수 있습니다.
또는 타사 Qt.py를 사용하여 모든 PySide/PyQt 라이브러리 버전 간의 매핑을 돕고, 코드 라이브러리 버전을 독립적으로 만들 수 있습니다.
그래서 이런 대사가 있죠:
from PySide2 import QtWidgets, QtCore, QtGui
다음과 같이 될 것입니다:
from Qt import QtWidgets, QtCore, QtGui
Nuke 경로에 Qt.py가 있으면 Nuke 버전에 맞게 코드를 수정하지 않고도 여러 Nuke 버전 간에 모듈을 가져올 수 있습니다. Qt.py는 GitHub에서 https://github.com/mottosso/Qt.py 에서 찾을 수 있습니다.
참고 : Qt.py 프로젝트는 제3자에 의해 생성되었으므로 문제나 질문이 있는 경우 프로젝트 소유자에게 보고해야 합니다.
추가 읽기
PySide2에서 PySide6로 변환하는 방법에 대한 다른 타사 가이드도 아래에서 찾을 수 있습니다.
우리는 문제로 불편을 끼쳐 드려 죄송합니다
이유를 알려주세요