जब भी संबंधित कोड तत्वों को आयात किया जाता है, तो .pyc फाइलें उत्पन्न होती हैं और यदि संबंधित कोड फाइलें अपडेट की गई हैं, तो वे अपडेट की जाती हैं। यदि .pyc फ़ाइलें हटा दी जाती हैं, तो वे स्वचालित रूप से पुनर्जीवित हो जाएंगे। हालाँकि, संबंधित कोड फ़ाइलों को हटाए जाने पर वे स्वचालित रूप से हटाए नहीं जाते हैं।
यह फ़ाइल-स्तर रिफ्लेक्टर के दौरान कुछ बहुत मजेदार कीड़े पैदा कर सकता है।
सबसे पहले, आप पुश कोड को समाप्त कर सकते हैं जो केवल आपकी मशीन पर काम करता है और किसी और पर नहीं। यदि आपके पास आपके द्वारा हटाई गई फ़ाइलों के संदर्भ हैं, तो ये तब भी स्थानीय रूप से काम करेंगे यदि आप प्रासंगिक .pyc फ़ाइलों को मैन्युअल रूप से नहीं हटाते हैं क्योंकि .pyc फ़ाइलों को आयात में उपयोग किया जा सकता है। यह इस तथ्य के साथ जटिल है कि एक ठीक से कॉन्फ़िगर किया गया संस्करण नियंत्रण प्रणाली केवल .py फ़ाइलों को केंद्रीय रिपॉजिटरी में भेजती है, न कि .pyc फाइलें, जिसका अर्थ है कि आपका कोड "आयात परीक्षण" (सब कुछ ठीक आयात करता है) पास कर सकता है बस ठीक है और नहीं किसी और के कंप्यूटर पर काम करें।
यदि आप पैकेज को मॉड्यूल में बदलते हैं तो दूसरा, आपके पास कुछ बहुत ही भयानक कीड़े हो सकते हैं। जब आप किसी पैकेज ( __init__.pyफ़ाइल के साथ एक फ़ोल्डर ) को एक मॉड्यूल (.py फ़ाइल) में परिवर्तित करते हैं, तो .pyc फ़ाइलें जो एक बार प्रतिनिधित्व करती हैं, वह पैकेज बनी रहती हैं। विशेष रूप से, __init__.pycअवशेष। इसलिए, यदि आपके पास कुछ कोड के साथ पैकेज फ़ू है, जो मायने नहीं रखता है, तो बाद में उस पैकेज को हटा दें और कुछ फ़ंक्शन def bar(): passऔर रन के साथ एक फ़ाइल foo.py बनाएं :
from foo import bar
आपको मिला:
ImportError: cannot import name bar
क्योंकि अजगर अभी भी foo पैकेज से पुरानी .pyc फ़ाइलों का उपयोग कर रहा है, जिनमें से कोई भी बार को परिभाषित नहीं करता है। यह एक वेब सर्वर पर विशेष रूप से समस्याग्रस्त हो सकता है, जहां .pyc फ़ाइलों के कारण पूरी तरह से कार्य कोड टूट सकता है।
इन दोनों कारणों (और संभवतः अन्य) के परिणामस्वरूप, आपके परिनियोजन कोड और परीक्षण कोड को .pyc फ़ाइलों को नष्ट करना चाहिए, जैसे कि bash की निम्न पंक्ति के साथ:
find . -name '*.pyc' -delete
इसके अलावा, अजगर 2.6 के रूप में, आप -B.pyc फ़ाइलों का उपयोग नहीं करने के लिए ध्वज के साथ अजगर चला सकते हैं । देखें कि कैसे बचें। पीसी फाइलें? अधिक जानकारी के लिए।
यह भी देखें: मैं किसी परियोजना से सभी .pyc फाइलें कैसे निकालूं?
rm *.pyc। यह नेस्टेड फ़ोल्डरों में .pyc फाइल्स को डिलीट नहीं करेगा।find . -name '*.pyc' -deleteइसके बजाय का उपयोग करें