कमांड लाइन विकल्प का –m विकल्प किसी दिए गए मॉड्यूल की खोज करता है और इसे __main__ मॉड्यूल के रूप में निष्पादित करता है। यह तंत्र आंतरिक रूप से पायथन के मानक मॉड्यूल से रनपी मॉड्यूल द्वारा समर्थित है जो स्क्रिप्ट को फाइल सिस्टम के बजाय पायथन मॉड्यूल नेमस्पेस का उपयोग करके स्थित करने की अनुमति देता है।
यह मॉड्यूल दो कार्यों को परिभाषित करता है
run_module()
यह फ़ंक्शन निर्दिष्ट मॉड्यूल के कोड को निष्पादित करता है और परिणामी मॉड्यूल ग्लोबल्स डिक्शनरी लौटाता है।
mod_name तर्क एक पूर्ण मॉड्यूल नाम होना चाहिए। यदि मॉड्यूल नाम सामान्य मॉड्यूल के बजाय किसी पैकेज को संदर्भित करता है, तो उस पैकेज को आयात किया जाता है और उस पैकेज के भीतर __main__ सबमॉड्यूल को निष्पादित किया जाता है और परिणामी मॉड्यूल ग्लोबल्स डिक्शनरी वापस आ जाती है।
विशेष वैश्विक चर __name__, __spec__, __file__, __cached__, __loader__ और __package__ मॉड्यूल कोड निष्पादित होने से पहले ग्लोबल्स डिक्शनरी में सेट किए जाते हैं।
__name__ को mod_name + '.__main__' पर सेट किया जाता है यदि नामित मॉड्यूल एक पैकेज है और अन्यथा mod_name तर्क के लिए।
__file__, __cached__, __loader__ और __package__ मॉड्यूल विनिर्देश के आधार पर सामान्य रूप से सेट किए जाते हैं।
run_path()
यह फ़ंक्शन दिए गए पथ पर फ़ाइल में कोड निष्पादित करता है और परिणामी मॉड्यूल ग्लोबल्स डिक्शनरी देता है। आपूर्ति किया गया पथ एक पायथन स्रोत फ़ाइल, एक संकलित बायटेकोड फ़ाइल या एक मान्य sys.path प्रविष्टि को संदर्भित कर सकता है जिसमें एक __main__ मॉड्यूल होता है (उदाहरण के लिए एक शीर्ष-स्तरीय __main__.py फ़ाइल युक्त ज़िप फ़ाइल)।
विशेष वैश्विक चर __name__, __spec__, __file__, __cached__, __loader__ और __package__ मॉड्यूल कोड निष्पादित होने से पहले ग्लोबल्स डिक्शनरी में सेट किए जाते हैं।
__name__ को रन_नाम पर सेट किया जाता है यदि यह वैकल्पिक तर्क कोई नहीं और अन्यथा '
उदाहरण
निम्न स्क्रिप्ट को runpyeample.py के रूप में सहेजें
#runpy example def add(x,y): return x+y def main(): x,y = 10,20 print (add(x,y)) return if __name__=='__main__': main()
उपरोक्त उदाहरण को क्रियान्वित करने की सामान्य प्रक्रिया इस प्रकार है
>>> import runpyexample as rp >>> rp.main() 30 >>>के रूप में इंपोर्ट करें
हालांकि, अब हम इसे वास्तव में आयात किए बिना निष्पादित करने के लिए रनपी मॉड्यूल का उपयोग करते हैं।
>>> import runpy >>> runpy.run_module('runpyexample', run_name='__main__') 30
आप run_path() फ़ंक्शन का भी उपयोग कर सकते हैं।
>>> runpy.run_path('runpyexample.py', run_name='__main__') 30
जैसा कि पहले कहा गया है, रनपी पायथन कमांड लाइन के -एम स्विच का समर्थन करता है।
E:\python37>python -m runpyexample 30