Q100398: Nuke 11+ இல் PySide பிழைகளைத் தீர்ப்பது

அறிகுறிகள்

Nuke 11.0v1 அல்லது அதற்குப் பிறகு பைதான் ஸ்கிரிப்டைத் தொடங்கும்போது, உங்கள் ஸ்கிரிப்ட்டுக்கு பைத்தானின் PySide தொகுதி தேவைப்பட்டால், Nuke ஒரு விதிவிலக்கை எறிந்துவிடும், அது திறப்பதைத் தடுக்கும்.

கீழே காட்டப்பட்டுள்ளபடி, Nuke இன் init.py கோப்பில் PySide தொகுதி இறக்குமதி செய்யப்பட்டால், பின்வரும் விதிவிலக்கு Nuke துவக்கத்தில் ஏற்படும்:
Nuke இன் துவக்க முனையத்திற்குள், ஒரு ImportError காண்பிக்கப்படும், அதில் Nuke ஒரு PySide தொகுதியை இறக்குமதி செய்ய முடியாது என்பதைக் குறிப்பிடுகிறது, இந்த விஷயத்தில், PySide.QtCore :

காரணம்

Nuke 11.0v1 வெளியீட்டில், பல நூலக மாற்றங்கள் செய்யப்பட்டன, இதனால் Nuke விஎஃப்எக்ஸ் குறிப்பு தளம் இணக்கமாக இருந்தது.
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' கோப்புறையில் உள்ள எந்த ஸ்கிரிப்டுகளையும் செயல்படுத்துவதற்கு முன் விதிவிலக்கைப் பிடிக்க மாற்ற வேண்டும்.
விதிவிலக்கைக் கையாள்வது, import அறிக்கைகளை மாற்றியமைப்பதன் மூலம் try and except செயல்பாட்டை அழைக்கலாம், மேலும் PySide தொகுதிகளை இறக்குமதி செய்யும் போது ImportError பிடிக்கலாம்.
விதிவிலக்கு கண்டறியப்பட்டால், 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
இது பழைய PySide குறியீட்டை PySide2 இல் இயக்க அனுமதிக்கிறது, ஏனெனில் பெரும்பாலான QtGui செயல்பாடுகள் QtWidgets தொகுதிக்கு மாற்றப்பட்டுள்ளன. தயவுசெய்து கவனிக்கவும் : இது பல PySide தொகுதிகளுக்கு வேலை செய்யும், ஆனால் அவை அனைத்திற்கும் வேலை செய்யாது, எனவே உங்கள் குறியீட்டின் பிற பகுதிகளை நீங்கள் இன்னும் புதுப்பிக்க வேண்டியிருக்கும்.
PySide தொகுதிகளைப் பயன்படுத்தும் ஸ்கிரிப்டுகள் Nuke 11 மற்றும் Nuke 12 இல் சரியாக வேலை செய்வதை உறுதிசெய்ய, நீங்கள் மாற்றத்தை முடிக்க வேண்டும், மேலும் அனைத்து PySide செயல்பாடுகளும் PySide2 பதிப்புகளாக மறுசீரமைக்கப்பட வேண்டும்.
Nuke 10.5 மற்றும் Nuke 11 அல்லது 12 இரண்டிலும் PySide மற்றும் PySide2 ஐப் பயன்படுத்தும் போது குறியீடு இணக்கத்தன்மையைப் பெற விரும்பினால், Qt.py திட்டம் உங்கள் Nuke பதிப்பைப் பொறுத்து PySide மற்றும் PySide2 தொகுதிகளை மாற்றும் ஒரு செயல்முறையை வழங்குகிறது.
குறிப்பு : Qt.py திட்டம் ஒரு மூன்றாம் தரப்பினரால் உருவாக்கப்பட்டது, எனவே, ஏதேனும் சிக்கல்கள் அல்லது கேள்விகள் இருந்தால் மூன்றாம் தரப்பு திட்ட உரிமையாளர்களிடம் தெரிவிக்கப்பட வேண்டும்.

கூடுதல் வாசிப்பு

விதிவிலக்குகளைக் கையாள்வது பற்றி மேலும் அறிய விரும்பினால், பின்வரும் இணைப்பில் விதிவிலக்குகள் குறித்த பைதான் ஆவணங்களை அணுகலாம்: பைதான் ஆவணப்படுத்தல் - விதிவிலக்குகளைக் கையாளுதல்

Nuke 16+ இல் PySide பிழைகளைத் தீர்ப்பது பற்றிய கூடுதல் தகவலுக்கு, பின்வரும் கட்டுரையைப் பார்க்கவும்:
Q100715: Nuke 16+ இல் Python PySide சிக்கல்களை எவ்வாறு நிவர்த்தி செய்வது

    We're sorry to hear that

    Please tell us why