Q100716: विंडोज़ पर Nuke लॉन्च करते समय "_ctypes आयात करते समय DLL लोड विफल" त्रुटि को कैसे हल करें?

लक्षण

विंडोज मशीन पर Nuke लॉन्च करने का प्रयास करते समय, कुछ उपयोगकर्ताओं को लगातार क्रैश का अनुभव होता है और कमांड प्रॉम्प्ट में निम्नलिखित के समान एक त्रुटि संदेश दिखाई देता है:

ImportError: DLL load failed while importing _ctypes: The specified module could not be found.

यह आलेख इस त्रुटि को रोकने के लिए उठाए जाने वाले कदमों तथा ऐसा क्यों होता है, इसकी पृष्ठभूमि बताएगा।

कारण

हम वर्तमान में निम्नलिखित प्रोग्रामों से अवगत हैं जो DLL load failed while importing _ctypes और Nuke 16 को लॉन्च होने से रोकने में त्रुटि उत्पन्न कर सकते हैं। हालाँकि, कृपया ध्यान दें कि यह एक अपूर्ण सूची है, और यह समस्या अन्य एप्लिकेशन के कारण भी हो सकती है:

यह समस्या विंडोज रजिस्ट्री में अतिरिक्त "एप्लिकेशन पथ" जोड़े जाने का परिणाम है जो Nuke के पायथन संस्करण के साथ टकराव पैदा करते हैं। हालाँकि यह समस्या अभी तक केवल Nuke 16 को लॉन्च करते समय ही रिपोर्ट की गई है, लेकिन यही समस्या Nuke के अन्य संस्करणों को भी प्रभावित कर सकती है।

जब कोई तृतीय-पक्ष एप्लिकेशन इंस्टॉल किया जाता है जो पायथन का उपयोग करता है, तो वह विंडोज़ रजिस्ट्री के माध्यम से पायथन मॉड्यूल खोज पथ ( sys.path ) में अपनी निर्देशिकाएँ जोड़ सकता है। यदि एप्लिकेशन का पायथन संस्करण वही संस्करण है जिसका उपयोग Nuke करता है, तो ये अतिरिक्त "एप्लिकेशन पथ" Nuke को चलाने के लिए आवश्यक पायथन मॉड्यूल तक पहुँचने और आयात करने से रोक सकते हैं।

उदाहरण के लिए, स्पाइडर 6 पायथन 3.11 का उपयोग करता है, जो कि पायथन Nuke 16 के उसी संस्करण में उपयोग किया जाता है। चूँकि स्पाइडर 6 अपने "एप्लिकेशन पथों" की ओर इशारा करते हुए रजिस्ट्री प्रविष्टियाँ बनाता है, इसलिए जब Nuke लॉन्च होता है, तो यह उन स्थानों पर विशिष्ट मॉड्यूल खोजेगा और जब वे नहीं मिलते हैं, तो खुलना बंद कर देगा।

विंडोज रजिस्ट्री प्रविष्टियों और पायथन के बारे में अतिरिक्त जानकारी के लिए कृपया आगे पढ़ने हेतु अनुभाग देखें।

संकल्प

इस समस्या के समाधान के लिए उपलब्ध विकल्प इस बात पर निर्भर करते हैं कि कौन सा प्रोग्राम समस्या पैदा कर रहा है। इसलिए, पहला कदम यह सत्यापित करना है कि कौन सा विशिष्ट प्रोग्राम Nuke के पायथन संस्करण के साथ संघर्ष कर रहा है।

ऐसा करने के लिए, कृपया Nuke 16 के पायथन निष्पादन योग्य को लॉन्च करने और वर्तमान मॉड्यूल खोज पथों को प्रिंट करने के लिए नीचे दी गई प्रक्रिया का पालन करें:

  1. कमांड प्रॉम्प्ट विंडो खोलें और निम्न कमांड चलाएँ:
"C:\Program Files\Nuke16.0v1\python.exe"
  1. कोड को पूरी तरह से निष्पादित करने के लिए Enter कुंजी को दो बार दबाते हुए, निम्नलिखित दो पंक्तियों को चलाएँ:
import sys
for p in sys.path: print(p)
  1. इस बिंदु पर आपको यह देखना चाहिए कि Nuke द्वारा उपयोग किए गए खोज पथ मुद्रित हो गए हैं:

तुलना के लिए, स्पाइडर 6 स्थापित होने पर भी यही आउटपुट है:

नोट : इन अतिरिक्त हाइलाइट किए गए पथों को मैन्युअल रूप से हटाया या संपादित नहीं किया जाना चाहिए, और इसके बजाय आपको समस्या को हल करने के लिए नीचे दिए गए विकल्पों में से एक का उपयोग करना चाहिए।

एक बार जब आप जिम्मेदार कार्यक्रम की पहचान कर लें, तो निम्नलिखित समाधानों में से एक का चयन करें जो आपकी आवश्यकताओं के लिए सबसे उपयुक्त हो:

A) एप्लिकेशन को अनइंस्टॉल करें

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

बी) एप्लिकेशन को अनइंस्टॉल करें और नए संस्करण में अपग्रेड करें

यदि आपको अभी भी प्रोग्राम का उपयोग करने की आवश्यकता है, तो मौजूदा संस्करण को हटाकर और अधिक नवीनतम संस्करण में अपडेट करना, जो Nuke के पायथन के साथ संघर्ष नहीं करता है, समस्या को हल कर सकता है।

उदाहरण के लिए, नवीनतम एनाकोंडा3 रिलीज में पायथन 3.12 का उपयोग किया गया है, और इसे स्थापित करने से Nuke 16 की लॉन्च करने की क्षमता पर कोई प्रभाव नहीं पड़ता है।

C) एप्लिकेशन के “एप्लिकेशन पथ” को परिभाषित किए बिना एप्लिकेशन को पुनः इंस्टॉल करें

यदि आपको अभी भी प्रोग्राम का संस्करण अपग्रेड किए बिना उपयोग करने की आवश्यकता है, तो Anaconda3 और MiniConda3 जैसे कुछ अनुप्रयोगों में इंस्टॉलेशन के दौरान "एप्लिकेशन पथ" को अक्षम करने का विकल्प होता है जो Nuke को लॉन्च होने से रोकता है।

एनाकोंडा3 और मिनीकोंडा3 के लिए, इस विकल्प को " {प्रोग्राम} को मेरे डिफ़ॉल्ट पायथन 3.11 के रूप में पंजीकृत करें " कहा जाता है, और Nuke सही ढंग से लॉन्च करने के लिए इसे अक्षम किया जाना चाहिए।

पायथन 3.11 के लिए एनाकोंडा को डिफ़ॉल्ट के रूप में परिभाषित किए बिना इसे पुनः स्थापित करने के बुनियादी चरण नीचे दिए जा सकते हैं, लेकिन कृपया ध्यान दें कि विशिष्ट सेटिंग का नाम अनुप्रयोगों के बीच भिन्न हो सकता है, और सभी प्रोग्रामों में यह विकल्प नहीं होगा:

i) अपनी मशीन से एप्लिकेशन को अनइंस्टॉल करें
ii) प्रोग्राम को पुनः स्थापित करना शुरू करें
iii) जब संकेत दिया जाए, तो " {program} को मेरे डिफ़ॉल्ट पायथन 3.11 के रूप में पंजीकृत करें " विकल्प बॉक्स को अक्षम करें :

D) विंडोज रजिस्ट्री को मैन्युअल रूप से संशोधित करें

यदि आपको किसी प्रोग्राम का उपयोग जारी रखने की आवश्यकता है, लेकिन इसमें “एप्लिकेशन पथ” को विंडोज रजिस्ट्री में जोड़े जाने से रोकने का विकल्प नहीं है, तो इन पथों को हटाने के लिए रजिस्ट्री को समायोजित करना संभव है।

चेतावनी : विंडोज़ रजिस्ट्री में किए गए किसी भी गलत बदलाव से आपकी मशीन पर बुरा असर पड़ सकता है, इसलिए इसे सावधानी से करें और विंडोज़ रजिस्ट्री को संपादित करने से पहले हमेशा एक बैकअप बना लें। Foundry आपकी मशीन में किए गए किसी भी बदलाव के लिए ज़िम्मेदार नहीं है, और ऐसा कोई भी बदलाव अन्य एप्लिकेशन को ठीक से काम करने से रोक सकता है।


यदि आप विंडोज रजिस्ट्री के माध्यम से अपने कंप्यूटर की सेटिंग्स में बदलाव करने में सहज महसूस करते हैं और आगे बढ़ना चाहते हैं, तो कृपया एक प्रशासक के रूप में निम्नलिखित क्रियाएं करें:

i) रजिस्ट्री संपादक खोलें और यहां जाएं: Computer\HKEY_CURRENT_USER\Software\Python\PythonCore
ii) 3.11 उप-फ़ोल्डर का विस्तार करें, और PythonPath फ़ोल्डर का चयन करें:

iii) इस फ़ोल्डर पर राइट-क्लिक करें, नाम बदलें विकल्प चुनें, और नाम "PythonPath_Disabled" (या समान) सेट करें:

iv) Nuke 16 को लॉन्च करते समय DLL लोड विफल त्रुटि अब दिखाई नहीं देनी चाहिए। यदि ऐसा नहीं है, तो आपको Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore स्थान में भी इस प्रक्रिया को दोहराने की आवश्यकता हो सकती है।

अग्रिम पठन

रजिस्ट्री प्रविष्टियाँ पायथन sys.path कैसे बदल सकती हैं, इसके बारे में अधिक जानकारी के लिए, कृपया यहाँ पायथन दस्तावेज़ देखें:

https://docs.python.org/3/using/windows.html#finding-modules

यदि आप परस्पर विरोधी पायथन "एप्लिकेशन पथ" को हटाने के बाद भी कठिनाइयों का सामना कर रहे हैं, तो कृपया एक समर्थन टिकट बनाएं ताकि हमें सामने आई सटीक समस्या और उठाए गए समस्या निवारण चरणों के बारे में पता चल सके।

समर्थन अनुरोध खोलने के तरीके के बारे में अधिक जानकारी के लिए, कृपया यह लेख देखें:

Q100064: समर्थन टिकट कैसे जारी करें

    हम चाहते हैं कि खेद व्यक्त करते हैं

    कृपया हमें बताएँ कि