दिलचस्प पोस्ट
eof () बुरा अभ्यास? जावास्क्रिप्ट में, क्यों "यह" ऑपरेटर असंगत है? सफ़ल पाठ 3 का उपयोग करते हुए पायथन 3 में यूटीएफ -8 मुद्रण मैं AngularJS के साथ चेकबॉक्स मानों की सूची में कैसे बाँधूं? SQL सर्वर में तालिका नाम "dbo" से क्यों शुरू होते हैं? क्या html टैग के लिए अपरकेस अक्षरों का उपयोग करना बुरा है? पिकासो लाइब्रेरी, एंड्रॉइड: त्रुटि सुनने वाला का उपयोग करना जावा में डॉक या डॉक फाइल कैसे पढ़ी? असली डिवाइस (मोबाइल) पर विंडोज़ 10 यूवीपी को कैसे विकसित किया जाए? एक शब्दकोश से डेटाफ्रेम बनाना जहां प्रविष्टियों की अलग-अलग लंबाई है जावा क्लाइंट से HTTP सर्वर पर फ़ाइलें अपलोड करें सामान्य सीएसएस मीडिया क्वेरी ब्रेक पॉइंट्स इंटेंट्स के माध्यम से ईमेल प्रोग्राम कैसे खोलें (लेकिन केवल एक ईमेल प्रोग्राम) जावास्क्रिप्ट और वेबसाईट्स का उपयोग करके ब्लॉब से छवि प्रदर्शित करें मैं वायदा पूंछ को शामिल करने वाला फ़ंक्शन कैसे बना सकता हूँ?

खराब जादू संख्या त्रुटि क्या है?

अजगर में "खराब जादू संख्या" आयात क्या है, और मैं इसे कैसे ठीक कर सकता हूं?

केवल एक चीज जो मुझे ऑनलाइन मिल सकती है, सुझाव देती है कि यह एक .py -> .pyc फ़ाइल संकलित करके और फिर इसे अजगर के गलत संस्करण के साथ उपयोग करने का प्रयास कर रहा है। मेरे मामले में, हालांकि, फाइल कुछ बार ठीक आयात करने लगता है लेकिन अन्य लोगों के लिए नहीं, और मुझे यकीन नहीं है कि क्यों

ट्रेसबैक में उपलब्ध सूचना अजगर विशेष रूप से सहायक नहीं है (यही वजह है कि मैं यहां पूछ रहा था …), लेकिन यहां यह मदद करता है:

Traceback (most recent call last): File "run.py", line 7, in <module> from Normalization import Normalizer 

Solutions Collecting From Web of "खराब जादू संख्या त्रुटि क्या है?"

जादू संख्या UNIX- प्रकार सिस्टम से आता है, जहां फ़ाइल के पहले कुछ बाइट्स में फ़ाइल प्रकार का संकेत देने वाला एक मार्कर था।

पायथन एक समान मार्कर को अपनी pyc फ़ाइलों में डालता है, जब यह उन्हें बनाता है

फिर अजगर दुभाषिया यह सुनिश्चित करता है कि यह संख्या लोड होने पर सही है।

जो कुछ भी इस जादुई संख्या को नुकसान पहुंचाता है वह आपकी समस्या का कारण होगा। इसमें pyc फ़ाइल को संपादित करना या pyc को एक दूसरे संस्करण से अजगर (आमतौर पर बाद में) अपने दुभाषिया की तुलना में चलाने की कोशिश करना शामिल है

यदि वे आपकी pyc फाइल हैं, तो उन्हें हटा दें और इंटरप्रीटर को py फ़ाइलों को फिर से संकलित करें। यूनिक्स प्रकार सिस्टम पर, यह कुछ सरल रूप से हो सकता है:

 rm *.pyc 

या:

 find . -name '*.pyc' -delete 

यदि वे आपकी नहीं हैं, तो आपको फिर से संकलन के लिए pyc फाइलें pyc , या एक दुभाषिया जो उस खास मैजिक वैल्यू के साथ pyc फाइल चला सकता है।

एक बात जो आंतरायिक प्रकृति के कारण हो सकती है pyc जो समस्या पैदा कर रहा है वह केवल कुछ शर्तों के तहत आयात किया जा सकता है। यह अत्यधिक संभावना नहीं है कि यह कभी कभी आयात करेगा आयात विफल हो जाने पर आपको वास्तविक पूर्ण स्टैक ट्रेस की जांच करनी चाहिए?

एक तरफ, मेरे सभी 2.5.1(r251:54863) pyc फ़ाइलों का पहला शब्द 62131 , 2.6.1(r261:67517) 62161 । सभी मेमोरी नंबरों की सूची Python/import.c में पाई जा सकती है, जो पूर्णता के लिए यहां पुन: प्रस्तुत की जा रही है (वर्तमान समय के रूप में जवाब पोस्ट किया गया था, यह तब से बदल सकता है):

 1.5: 20121 1.5.1: 20121 1.5.2: 20121 1.6: 50428 2.0: 50823 2.0.1: 50823 2.1: 60202 2.1.1: 60202 2.1.2: 60202 2.2: 60717 2.3a0: 62011 2.3a0: 62021 2.3a0: 62011 2.4a0: 62041 2.4a3: 62051 2.4b1: 62061 2.5a0: 62071 2.5a0: 62081 2.5a0: 62091 2.5a0: 62092 2.5b3: 62101 2.5b3: 62111 2.5c1: 62121 2.5c2: 62131 2.6a0: 62151 2.6a1: 62161 2.7a0: 62171 

सभी .पीसी फ़ाइलों को हटाने से "खराब जादू संख्या" त्रुटि ठीक हो जाएगी।

 find . -name "*.pyc" -delete 

*.pyc साथ एक Python3 उत्पन्न *.pyc फ़ाइल लोड करने से भी इस त्रुटि का कारण बनता है।

पीवाईसी फ़ाइल को एक विंडोज़ मशीन में लें। इस पीईसी फाइल को खोलने के लिए हेक्स संपादक का इस्तेमाल करें। मैं फ्रीवेयर 'हेक्सएडिट' का इस्तेमाल किया अब पहले दो बाइट्स का हेक्स मूल्य पढ़ें। मेरे मामले में, ये 03 एफ 3 थे।

हेक्स और डेसिमल रूपांतरण देखने के लिए कैल्श खोलें और प्रोग्रामर (XP में वैज्ञानिक) में अपने प्रदर्शन मोड को परिवर्तित करें। रेडियो बटन से "हेक्स" चुनें पहले दूसरे बाइट के रूप में मूल्य दर्ज करें और फिर पहले बाइट यानी f303 अब "Dec" (दशमलव) रेडियो बटन पर क्लिक करें प्रदर्शित मान एक है जो अजगर के जादू संख्या उर्फ ​​संस्करण के अनुरूप है।

इसलिए, पहले के उत्तर में प्रदान की गई तालिका पर विचार करना

  • 1.5 => 20121 => 4 ई 99 तो फाइलें पहले बाइट 99 और दूसरे के रूप में 4e होगी
  • 1.6 => 50428 => सी 4 एफसी इसलिए फ़ाइलों को पहली बाइट एफसी के रूप में और दूसरा सी 4 के रूप में होगा

मेरे पास बहुत पुरानी (1.5.2) कार्यान्वयन का उपयोग करते हुए खराब जादू संख्या त्रुटि का एक अजीब मामला था मैंने एक .pyo फ़ाइल उत्पन्न की और जो त्रुटि को चालू कर दिया। विचित्र रूप से, समस्या का हल मॉड्यूल के नाम को बदलकर किया गया था। अपमानजनक नाम sms.py था। अगर मैंने उस मॉड्यूल से एक sms.pyo उत्पन्न किया है, तो खराब मैजिक नंबर त्रुटि का परिणाम था। जब मैंने नाम को smst.py में बदल दिया, तो त्रुटि दूर चली गई। मैंने आगे और पीछे की जाँच की कि यह देखने के लिए कि क्या sms.py एक ही नाम से किसी अन्य मॉड्यूल के साथ हस्तक्षेप करता है, लेकिन मुझे कोई नाम टकराव नहीं मिला। हालांकि इस समस्या का स्रोत मेरे लिए एक रहस्यमय बना रहा, फिर भी मैं एक मॉड्यूल नाम परिवर्तन की कोशिश कर रहा हूं।

उन्हें मत मिटाएं !!! इस समय तक ……….

अपने जीआईटी, एसवीएन या कॉपी फ़ोल्डर पर संस्करण ढूंढें जो काम करता है

उन्हें हटाएं और फिर सभी .pyc पुनर्प्राप्त करें

यह मेरे लिए काम है

यह ऊपर की तुलना में अधिक कुशल है

 find {directory-of-.pyc-files} -name "*.pyc" -print0 | xargs -0 rm -rf 

जहां {directory-of-.pyc-files} निर्देशिका है जिसमें संकलित अजगर फ़ाइलें हैं

मेरे मामले में यह नहीं था .pyc लेकिन पुरानी बाइनरी .mo .pyc अनुवाद फाइलों के बाद मैंने अपने मॉड्यूल का नाम बदला, इसलिए इस मॉड्यूल फ़ोल्डर में मुझे चलाने के लिए

 find . -name \*.po -execdir sh -c 'msgfmt "$0" -o `basename $0 .po`.mo' '{}' \; 

(कृपया बैकअप करें और पहले .pyc फाइल को ठीक करने का प्रयास करें)

यह तब भी हो सकता है जब आपके पास गलत python27.dll फ़ाइल (विंडोज के मामले में) है, ताकि इसे ठीक से ठीक इसी डीएलएल संस्करण के साथ पुन: इंस्टॉल करें (या निकालें) अजगर को हल करें। मुझे एक ऐसा ही अनुभव हुआ था।

मुझे सिर्फ वही मुद्दे का सामना करना पड़ता है, जिसमें फेडोरा 26 के साथ कई उपकरण जैसे डीएनएफ जैसे खराब मैजिक नंबर के कारण छह के लिए टूट गया था। अज्ञात कारण के लिए मुझे एक फ़ाइल /usr/bin/six.pyc मिली है, अनपेक्षित मैजिक नंबर के साथ। इस फाइल को हटाना समस्या ठीक करें