लक्षण
Nuke 11.0v1 या बाद के संस्करण के साथ Python स्क्रिप्ट लॉन्च करते समय, यदि आपकी स्क्रिप्ट को Python के PySide मॉड्यूल की आवश्यकता है, तो Nuke एक अपवाद फेंक देगा जो इसे खुलने से रोक देगा।
नीचे प्रदर्शित, यदि Nuke की
init.py
फ़ाइल में PySide मॉड्यूल आयात किया जाता है, तो Nuke लॉन्च पर निम्नलिखित अपवाद होता है: Nuke के लॉन्च टर्मिनल के भीतर, एक
ImportError
निर्दिष्ट करते हुए दिखाई जाएगी कि Nuke एक PySide मॉड्यूल आयात नहीं कर सका, इस मामले में, PySide.QtCore
: कारण
Nuke 11.0v1 की रिलीज़ के साथ, लाइब्रेरी में कई बदलाव हुए, जिससे Nuke VFX रेफरेंस प्लेटफ़ॉर्म अनुरूप हो गया।
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
इसके अतिरिक्त, कुछ वर्गों की परिभाषा को मॉड्यूल के बीच स्थानांतरित कर दिया गया है। यह विशेष रूप से किसी भी GUI संबंधित कक्षाओं को प्रभावित करता है, जिन्हें ज्यादातर
PySide.QtGui
से PySide2.QtWidgets
में स्थानांतरित कर दिया गया है, हालांकि, अन्य मॉड्यूल भी हैं जिन्हें भी स्थानांतरित किया गया है।संकल्प
Nuke लॉन्च करते समय
ImportError
अपवाद को हल करने के लिए, आपके '.nuke' फ़ोल्डर के भीतर कोई भी स्क्रिप्ट जो PySide का उपयोग करती है, उसे निष्पादन से पहले अपवाद को पकड़ने के लिए बदलने की आवश्यकता होगी। अपवाद को संभालने के लिए आयात विवरण को संशोधित करके
try
और except
फ़ंक्शन को कॉल किया जा सकता है, और PySide मॉड्यूल आयात करते समय ImportError
पकड़ा जा सकता है। यदि अपवाद पकड़ा जाता है, तो PySide2 समकक्ष फ़ंक्शंस को आयात करने के लिए कॉल को जोड़ा जा सकता है, जो स्टार्टअप पर
ImportError
त्रुटि को रोक देगा।अग्रिम जानकारी
जैसा कि कारण अनुभाग में बताया गया है, जीयूआई से संबंधित कुछ कार्यों को अन्य मॉड्यूल में स्थानांतरित कर दिया गया है। सभी 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
यह पुराने PySide कोड को PySide2 में चलाने की अनुमति देता है, क्योंकि अधिकांश QtGui फ़ंक्शन QtWidgets मॉड्यूल में स्थानांतरित हो गए हैं। कृपया ध्यान दें : यह अभी तक कई पायसाइड मॉड्यूल के लिए काम करता है, लेकिन सभी के लिए नहीं, इसलिए आपको अभी भी अपने कोड के अन्य हिस्सों को अपडेट करना पड़ सकता है।
यह सुनिश्चित करने के लिए कि PySide मॉड्यूल का उपयोग करने वाली स्क्रिप्ट Nuke 11 और Nuke 12 में सही ढंग से काम करती हैं, आपको संक्रमण को पूरा करने की आवश्यकता है और सभी
PySide
फ़ंक्शन को PySide2
संस्करणों के रूप में पुन: सक्रिय करने की आवश्यकता होगी। यदि आप Nuke 10.5 और Nuke 11 या 12 दोनों में PySide और PySide2 का उपयोग करते समय कोड संगतता चाहते हैं, तो Qt.py प्रोजेक्ट एक प्रक्रिया प्रदान करता है जो आपके Nuke संस्करण के आधार पर PySide और PySide2 मॉड्यूल को स्विच करता है।
ध्यान दें : Qt.py प्रोजेक्ट किसी तीसरे पक्ष द्वारा बनाया गया है और इस प्रकार, किसी भी समस्या या प्रश्न को तीसरे पक्ष के प्रोजेक्ट मालिकों को सूचित किया जाना चाहिए।
अतिरिक्त पढ़ना
यदि आप अपवादों को संभालने के बारे में अधिक जानना चाहते हैं, तो आप निम्नलिखित लिंक पर अपवादों पर पायथन दस्तावेज़ तक पहुंच सकते हैं: पायथन दस्तावेज़ीकरण - अपवादों को संभालना
हम चाहते हैं कि खेद व्यक्त करते हैं
कृपया हमें बताएँ कि