증상
Nuke 11.0v1 이상을 사용하여 Python 스크립트를 시작할 때 스크립트에 Python의 PySide 모듈이 필요한 경우 Nuke 열리지 못하게 하는 예외를 발생시킵니다.
아래에 표시된 것처럼 PySide 모듈을 Nuke 의
init.py
파일로 가져온 경우 Nuke 실행 시 다음 예외가 발생합니다. Nuke 의 시작 터미널 내에서 Nuke PySide 모듈(이 경우
PySide.QtCore
을 가져올 수 없음을 지정하는 ImportError
표시됩니다. 원인
PySide의 경우 Nuke 코어 라이브러리 내에서 PySide 1.2.2에서 PySide 2.0으로 업데이트되었으므로 이제 PySide가 아닌 Pyside2로 가져올 수 있습니다. 현재 Nuke 와 함께 제공되는 라이브러리 버전에 대한 자세한 내용은 설명서의 타사 라이브러리 및 글꼴 섹션을 참조하세요.
PySide에서 PySide2로 업데이트한 결과, Nuke 11.0v1부터 PySide 모듈을 더 이상 호출할 수 없습니다.
예를 들어:
import PySide.some_module
다음으로 대체되었습니다:
import PySide2.some_module
또한 일부 클래스의 정의가 모듈 간에 이동되었습니다. 이는 특히 대부분
PySide.QtGui
에서 PySide2.QtWidgets
로 이동된 GUI 관련 클래스에 영향을 주지만, 재배치된 다른 모듈도 있습니다.해결
Nuke 시작할 때
ImportError
예외를 해결하려면 PySide를 사용하는 '.nuke' 폴더 내의 모든 스크립트를 실행 전에 예외를 포착하도록 변경해야 합니다.try
및 except
함수를 호출하고 PySide 모듈을 가져올 때 ImportError
포착하도록 import 문을 수정하여 예외 처리를 수행할 수 있습니다. 예외가 발생하면 PySide2에 해당하는 함수를 가져오기 위한 호출을 추가할 수 있으며, 이를 통해 시작 시
ImportError
오류가 발생하는 것을 방지할 수 있습니다.추가 정보
원인 부분에서 언급한 바와 같이 GUI 관련 기능 중 일부가 다른 모듈로 이동되었습니다. 모든 GUI 관련 작업에 사용되는 PySide 모듈
PySide.QtGui
대부분 PySide2.QtWidgets
모듈로 이동되었습니다. 대부분의 경우 이 모듈을 사용할 때 Nuke 내에서
ImportError
방지하려면 스크립트에서 각 Pyside.QtGui
함수를 리팩토링하는 대신 이제 PySide2.QtWidgets
QtGui
로 가져와야 합니다. 이는 다음 스니펫에 표시된 대로 설정할 수 있습니다.
try: from PySide import QtGui, QtCore except ImportError:
from PySide2 import QtCore
from PySide2 import QtWidgets as QtGui
대부분의 QtGui 기능이 QtWidgets 모듈로 이동되었으므로 이를 통해 이전 PySide 코드를 PySide2에서 실행할 수 있습니다. 참고 : 이는 많은 PySide 모듈에서 작동하지만 전부는 아니므로 코드의 다른 부분을 업데이트해야 할 수도 있습니다.
PySide 모듈을 사용하는 스크립트가 Nuke 11 및 Nuke 12에서 올바르게 작동하도록 하려면 전환을 완료해야 하며 모든
PySide
기능을 PySide2
버전으로 리팩터링해야 합니다. Nuke 10.5와 Nuke 11 또는 12 모두에서 PySide 및 PySide2를 사용할 때 코드 호환성을 확보하려는 경우 Qt.py 프로젝트는 Nuke 버전에 따라 PySide 및 PySide2 모듈을 전환하는 프로세스를 제공합니다.
참고 : Qt.py 프로젝트는 제3자에 의해 생성되므로 문제나 질문이 있으면 제3자 프로젝트 소유자에게 보고해야 합니다.
추가 독서
예외 처리에 대해 더 자세히 알고 싶다면 다음 링크에서 예외에 대한 Python 설명서에 액세스할 수 있습니다. Python 설명서 - 예외 처리
우리는 문제로 불편을 끼쳐 드려 죄송합니다
이유를 알려주세요