2010-11-02 15 views
5

शुरुआती प्रश्न। मैंने अपना आईपीथॉन खोल शुरू कर दिया है और मैं रन-कमांड के साथ स्क्रिप्ट चला रहा हूं और सबकुछ बढ़िया काम करता है। हालांकि एक स्क्रिप्टफ़ाइल चला रहे हैं और फिर आयातित स्क्रिप्ट फ़ाइल को संपादित कर रहे हैं और फिर इसे फिर से चलाने का प्रयास कर पुराने आयातित फ़ाइल को चलाने का कारण बनता है। तो मुझे लगता है कि पाइथन गति के लिए किसी प्रकार का कैश बचाता है। मैंने स्पष्ट कमांड की कोशिश की है और ऐसा कोई फायदा नहीं हुआ है।इसे संपादित करने के बाद पाइथन शेल में निष्पादित स्क्रिप्ट आयात को कैसे अपडेट करें?

असल में मेरी समस्या यह है। दो फाइलें: function.py और program.py। प्रोग्राम फ़ाइल फ़ंक्शन आयात करती है। लेकिन प्रोग्राम चला रहे हैं और फिर फ़ंक्शन को संपादित कर रहे हैं और फिर प्रोग्राम को फिर से चलाना पुराने फ़ंक्शन/संयुक्त संस्करण को चलाने के लिए कारण बनता है।

+0

आप कमांड लाइन से 'program.py' क्यों नहीं चला रहे हैं? –

उत्तर

8

iPython या मानक पायथन दुभाषिया के अंदर, आप आयातित मॉड्यूल को पुनः लोड करने के लिए reload() फ़ंक्शन का उपयोग कर सकते हैं।

उदाहरण:

In [1]: import foo 
    # make some changes to the foo.py 
In [2]: reload(foo) 
+0

इसलिए स्क्रिप्ट फ़ाइल में आयात कमांड के बाद एक रीलोड जोड़ना वास्तव में चाल करता है! हालांकि किसी तरह के फ्लश कमांड के साथ अच्छा होगा। –

0

यह here कहा गया है कि फ़ाइल हर बार डिस्क से फिर से पढ़ी जाती है, क्या आप सुनिश्चित हैं कि त्रुटि आपके पक्ष में नहीं है?

+0

हां मेरी गलती। मैं चलाने वाली स्क्रिप्ट फ़ाइल अद्यतन हो जाती है लेकिन आयात की गई स्क्रिप्ट फ़ाइल में आयातित स्क्रिप्ट फ़ाइल नहीं चला रहा हूं। –

1

उपयोग Python's reload समारोह मॉड्यूल कोड पुनः संकलित करें और सभी मॉड्यूल स्तर कोड reexecute के लिए - अन्यथा अजगर दुभाषिया बासी संकलित बाईटकोड का उपयोग करेगा (.pyc)। उदाहरण के लिए:

In [1]: import script 

In [2]: run script 
... 

In [3]: reload(script) 
Out[3]: <module 'script' from 'script.pyc'> 
... 
In [4]: run script