지원 티켓 만들기
팔로우

Q100398 : 핵무기 11에 PySide 스크립트 구현

조짐

Nuke 11로 파이썬 스크립트를 시작할 때 Nuke 스크립트가 Python의 PySide 모듈을 필요로한다면 Nuke는 예외를 발생시켜 열지 못하게 할 것입니다.

아래에 나와있는 것처럼 Nuke의 menu.py 파일에 PySide 모듈을 가져 오는 경우 Nuke가 시작될 때 다음 예외가 발생합니다.
PluginError.PNG
Nuke의 실행 터미널에서 Nuke가 PySide 모듈을 가져올 수 없다는 것을 나타내는 ImportError 가 표시됩니다 (이 경우 PySide.QtCore .
PluginError3.png

원인


Nuke 11의 출시로 Nuke VFX Reference Platform 2017의 불만 사항 을 해결하기위한 중요한 라이브러리 업데이트가있었습니다.
PySide의 경우, 이것은 Nuke 핵심 라이브러리 내의 PySide 1.2.2에서 PySide 2.0으로 업데이트되었으므로 이제 PySide보다는 Pyside2로 가져올 수 있습니다. Nuke 11과 함께 제공되는 라이브러리 버전에 대한 자세한 내용 은 온라인 도움말의 부록 D를 참조하십시오.
PySide에서 PySide2 로의 업데이트 결과로, Nuke 11 PySide 모듈로 시작하는 것은 더 이상 호출 할 수 없습니다.
예 :
import PySide.some_module
다음으로 대체되었습니다 :

import PySide2.some_module
또한 일부 클래스의 정의가 모듈간에 이동되었습니다. 이것은 특히 PySide.QtGui 에서 PySide.QtGuiPySide2.QtWidgets GUI 관련 클래스에 영향을 미칩니다. 그러나 다른 모듈도 재배치되었습니다.

해결


Nuke를 시작할 때 ImportError 예외를 해결하려면 PySide를 사용하는 '.nuke'폴더 내의 모든 스크립트를 실행 전에 예외를 잡기 위해 변경해야합니다.
예외 처리는 tryexcept 함수를 호출하도록 import 문을 수정하고 PySide 모듈을 가져올 때 ImportError catch하여 수행 할 수 있습니다.
예외가 잡히면 호출을 추가하여 PySide2와 동등한 함수를 가져 오면 시작시 ImportError 오류가 발생하지 않습니다.

추가 정보


원인 섹션에서 언급했듯이 일부 GUI 관련 기능이 다른 모듈로 이동되었습니다. 모든 GUI 관련 작업에 사용되는 PySide 모듈 인 PySide.QtGui 는 대부분 PySide2.QtWidgets 모듈로 옮겨졌습니다.
대부분의 경우이 모듈을 사용할 때 Nuke 내에서 ImportError 를 피하고 스크립트의 각 Pyside.QtGui 함수를 리팩터링하는 대신 QtGui PySide2.QtWidgets 을 가져와야합니다.
다음 스 니펫에 표시된대로 설정할 수 있습니다.

try:
    from PySide import QtGui, QtCore
except ImportError:
from PySide2 import QtCore
from PySide2 import QtWidgets as QtGui
이렇게하면 대부분의 QtGui 함수가 QtWidgets 모듈로 옮겨져 이전 PySide 코드가 PySide2에서 실행됩니다.
Nuke 11에서 PySide 모듈을 사용하는 스크립트가 올바르게 작동하려면 전환을 완료해야하며 모든 PySide 함수를 PySide2 버전으로 리팩토링해야합니다.
Nuke 10.5와 Nuke 11에서 PySide와 PySide2를 사용할 때 코드 호환성을 원한다면 Qt.py 프로젝트 는 Nuke 버전에 따라 PySide와 PySide2 모듈을 전환하는 프로세스를 제공합니다.
참고 : Qt.py 프로젝트는 제 3 자에 의해 만들어 지므로 문제 나 질문은 제 3 자 프로젝트 소유자에게보고해야합니다.

추가 독서


예외 처리에 대해 더 알고 싶으면 다음 링크에서 예외에 대한 Python 문서에 액세스 할 수 있습니다. Python Documentation - 예외 처리
귀하의 스크립트가 PySide2.QtWebEngine 사용 PySide2.QtWebEngine , 불행하게도 모듈은 현재 Nuke 11에 구현되지 않고 작동하지 않습니다. 이것에 관한 더 많은 정보는 여기에서 찾을 수 있습니다 :

도움이 되었습니까?
/

We're sorry to hear that!

Please tell us why.
11명 중 11명이 도움이 되었다고 했습니다.

댓글