का उपयोग करते समय मॉड्यूल को दोबारा आयात करना I ipython से प्यार करता है, लेकिन मुझे% रन के साथ एक समस्या मिली है: आयातित मॉड्यूल को फिर से लोड नहीं किया जाता है जब% रन बार-बार कहा जाता है।ipython:% रन
import ex2
ex2.x.append(1)
print ex2.x
और फ़ाइल ex2.py शामिल हैं::
मान लीजिए फ़ाइल ex1.py रेखाएं हों,
x = []
अब
, कमांड लाइन से अजगर ex1.py चल बार बार प्रिंट [1] हर बार। लेकिन ipython के भीतर से %run ex1.py
का बार-बार प्रिंटिंग [1], [1,1], [1,1,1] इत्यादि का आह्वान करना ऐसा इसलिए है क्योंकि मॉड्यूल ex2.py पुनः लोड नहीं किया गया है। तो हमें एक समस्या है: ipython रन-स्क्रिप्ट प्रोटोकॉल "वास्तविक दुनिया" व्यवहार को प्रतिबिंबित नहीं कर रहा है।
नोट:
%load_ext autoreload
%autoreload 2
करता नहीं मदद करते हैं। उन पंक्तियों को ex2.py फिर से लोड किया जाएगा यदि ex2.py फ़ाइल में कोई परिवर्तन किया गया है। अगर हम कोई बदलाव नहीं करते हैं, या केवल ex1.py में परिवर्तन करते हैं, तो हमें अवांछित व्यवहार मिलता है।
क्या% रन कमांड लाइन की तरह व्यवहार करने का कोई तरीका है? यह स्क्रिप्ट के लिए परीक्षण वातावरण के रूप में ipython का उपयोग करने के साथ एक वास्तविक कमी की तरह लगता है। (या शायद नैतिक यह है कि एक मॉड्यूल किसी अन्य मॉड्यूल के नामस्थान में नहीं लिखा जाना चाहिए?)