एक टिकट बनाएं
अनुसरण करें

Q100398: Nuke 11 में PySide स्क्रिप्ट को लागू करना

लक्षण

जब Nuke 11 के साथ Python स्क्रिप्ट लॉन्च की जा रही है, अगर आपकी Nuke स्क्रिप्ट को Python के PySide मॉड्यूल की आवश्यकता है, तो Nuke एक अपवाद फेंक देगा जो इसे खोलने से रोक देगा।

नीचे प्रदर्शित किया गया है, निम्न अपवाद Nuke लॉन्च पर होता है यदि कोई PySide मॉड्यूल Nuke के menu.py फ़ाइल में आयात किया गया है:
PluginError.PNG
Nuke के लॉन्च टर्मिनल के भीतर, एक ImportError को यह निर्दिष्ट करते हुए दिखाया जाएगा कि Nuke एक PySide मॉड्यूल आयात नहीं कर सकता है, इस मामले में PySide.QtCore :
PluginError3.png

कारण


Nuke 11 की रिलीज़ के साथ, Nuke VFX संदर्भ प्लेटफ़ॉर्म 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 को PySide2.QtWidgets , तथापि, वहाँ अन्य मॉड्यूल के साथ-साथ दूसरी जगह किया गया है।

संकल्प


Nuke को लॉन्च करते समय ImportError अपवाद को हल करने के लिए, अपने '.nuke' फ़ोल्डर के भीतर कोई स्क्रिप्ट जो PySide का उपयोग करता है, निष्पादन से पहले अपवाद को पकड़ने के लिए बदलनी होगी।
अपवाद हैंडलिंग आयात बयानों को संशोधित करने के लिए एक कॉल करने के लिए किया जा सकता है try और except समारोह, और पकड़ने ImportError जब PySide मॉड्यूल आयात करने।
यदि अपवाद पकड़ा गया है, तो PySide2 समतुल्य कार्यों को आयात करने के लिए कॉल जोड़ा जा सकता है, जो स्टार्टअप पर ImportError त्रुटि को रोक देगा।

अग्रिम जानकारी


जैसा कि कॉज़ सेक्शन में उल्लेख किया गया है, GUI से संबंधित कुछ फ़ंक्शन को अन्य मॉड्यूल में स्थानांतरित कर दिया गया है। सभी GUI संबंधित कार्यों के लिए उपयोग किया जाने वाला PySide मॉड्यूल, PySide.QtGui , को अधिकतर PySide2.QtWidgets मॉड्यूल में स्थानांतरित कर दिया गया है।
इस मॉड्यूल का उपयोग करते समय अधिकांश मामलों में, Nuke के भीतर ImportError से बचने के लिए, और अपनी स्क्रिप्ट में प्रत्येक Pyside.QtGui फ़ंक्शन को QtGui करने के बजाय, आपको अब PySide2.QtWidgets को QtGui रूप में आयात करना चाहिए।
इसे निम्नलिखित स्निपेट में प्रदर्शित किया जा सकता है:

try:
    from PySide import QtGui, QtCore
except ImportError:
from PySide2 import QtCore
from PySide2 import QtWidgets as QtGui
यह PySide2 में पुराने PySide कोड को चलाने की अनुमति देता है, क्योंकि QtGui के अधिकांश फ़ंक्शन QtWidgets मॉड्यूल में चले गए हैं।
यह सुनिश्चित करने के लिए कि PySide मॉड्यूल का उपयोग करके स्क्रिप्ट्स Nuke 11 में सही तरीके से काम करती हैं, आपको संक्रमण को पूरा करने की आवश्यकता है और PySide सभी कार्यों को PySide2 संस्करणों के रूप में फिर से PySide2 करने की आवश्यकता होगी।
यदि आप Nuke 10.5 और Nuke 11 दोनों में PySide और PySide2 का उपयोग करते समय कोड संगतता चाहते हैं, तो Qt.py प्रोजेक्ट आपके Nuke संस्करण के आधार पर PySide और PySide2 मॉड्यूल को स्विच करने वाली एक प्रक्रिया प्रदान करता है।
नोट : Qt.py परियोजना एक तृतीय पक्ष द्वारा बनाई गई है और इस तरह, किसी भी समस्या या प्रश्नों को तीसरे पक्ष के परियोजना मालिकों को सूचित करने की आवश्यकता है।

अतिरिक्त कारोबार


यदि आप अपवादों से निपटने के बारे में अधिक जानना चाहते हैं, तो आप निम्न लिंक पर अपवादों पर पायथन प्रलेखन तक पहुँच सकते हैं: पायथन प्रलेखन - हैंडलिंग अपवाद
यदि आपकी स्क्रिप्ट PySide2.QtWebEngine का उपयोग PySide2.QtWebEngine , दुर्भाग्य से, मॉड्यूल वर्तमान में Nuke 11 में लागू नहीं किया गया है और यह काम नहीं करेगा। इसके बारे में अधिक जानकारी यहां पाई जा सकती है:

क्या यह लेख उपयोगी था?
/

We're sorry to hear that!

Please tell us why.
11 में से 11 के लिए उपयोगी रहा

टिप्पणियां