2009-09-07 4 views
17

प्रश्न बल्कि सीधा है लेकिन खोज के द्वारा उत्तर नहीं दिया गया। मैं एक पायथन स्क्रिप्ट में कैसे निर्धारित करूं कि क्या इस स्क्रिप्ट को मॉड्यूल के रूप में आयात किया गया है या स्क्रिप्ट के रूप में चलाया गया है? क्या अजगर में कोई अंतर है?मैं कैसे निर्धारित करूं कि एक पाइथन स्क्रिप्ट मॉड्यूल के रूप में आयात की जाती है या स्क्रिप्ट के रूप में चलाया जाता है?

समस्या यह है कि मैं स्क्रिप्ट लाइन पैरामीटर का मूल्यांकन केवल स्क्रिप्ट के रूप में चलाने के लिए करना चाहता हूं, लेकिन यदि मॉड्यूल केवल किसी अन्य स्क्रिप्ट में इसका उपयोग करने के लिए आयात नहीं किया जाता है। (मैं दोनों पुस्तकालय और कार्यक्रम के रूप में एक स्क्रिप्ट का उपयोग करने में सक्षम होना चाहता हूँ।) मुझे डर है कि वेनिला रास्ता lib और एक दूसरे स्क्रिप्ट यह का उपयोग करता है के निर्माण के लिए किया जाएगा, लेकिन मैं छोटे उपकरण के लिए एक दूसरे का विकल्प होता है करना चाहते हैं/libs।

उत्तर

29

अजगर docs से:

जब आप के साथ

अजगर fibo.py

मॉड्यूल में कोड जा मार डाला जाएगा एक पायथन मॉड्यूल चलाने के लिए, बस के रूप में यदि आप इसे आयात किया है, लेकिन "__main__" करने के लिए __name__ सेट के साथ। इसका मतलब है कि अपने मॉड्यूल के अंत में यह कोड जोड़ने द्वारा:

if __name__ == '__main__': 
    # Running as a script 

आप फ़ाइल एक स्क्रिप्ट के साथ ही एक आयात योग्य मॉड्यूल के रूप में प्रयोग करने योग्य बना सकते हैं, क्योंकि कोड है कि कमांड लाइन से पार्स केवल चलाता है यदि मॉड्यूल को "मुख्य" फ़ाइल

+3

के रूप में निष्पादित किया गया है तो यह थोड़ा जादू दिखता है लेकिन वास्तव में यह एक पूरी तरह से मानक मुहावरे है। यदि आप 'python-m somemodule' द्वारा आवंटित मॉड्यूल हैं तो आप \ _ \ _ मुख्य \ _ \ _ भी होंगे। – bobince

संबंधित मुद्दे

 संबंधित मुद्दे