Q100715: Nuke 16+에서 Python PySide 문제를 해결하는 방법

증상

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로 변환하는 방법에 대한 다른 타사 가이드도 아래에서 찾을 수 있습니다.

https://erwanleroy.com/nuke-16 및 pyside6용 파이썬 스크립트 업데이트/

https://www.pythonguis.com/faq/pyside2-vs-pyside6/

    우리는 문제로 불편을 끼쳐 드려 죄송합니다

    이유를 알려주세요