आयातित और लोड होने वाले मॉड्यूल के बीच का अंतर आपके वर्तमान मॉड्यूल के नामस्थान में रखा गया है। एक मॉड्यूल केवल एक बार (सामान्य परिस्थितियों में) लोड हो जाएगा, लेकिन कई अलग-अलग स्थानों से कई बार आयात किया जा सकता है। एक लोडेड मॉड्यूल किसी दिए गए नेमस्पेस में पहुंच योग्य नहीं हो सकता है, अगर उसे वहां आयात नहीं किया गया है। उदाहरण के लिए, आप from module import name
सिंटैक्स का उपयोग करके इसे अपने नाम के तहत आयात किए बिना मॉड्यूल लोड कर सकते हैं (आप निर्दिष्ट नाम तक पहुंच पाएंगे, लेकिन मॉड्यूल स्वयं नहीं)।
आप os
मॉड्यूल को sys.modules
शब्दकोश में देख रहे हैं क्योंकि इसका उपयोग पाइथन दुभाषिया द्वारा आंतरिक रूप से किया जाता है, और इसलिए यह हमेशा स्टार्टअप पर लोड होता है। हालांकि आप "ओएस" नाम का उपयोग करके इसका उपयोग नहीं कर सकते हैं, क्योंकि यह स्वचालित रूप से आपके नेमस्पेस में आयात नहीं होता है।
हालांकि, आप कुछ तरीकों से सामान्य आयात तंत्र को बाईपास कर सकते हैं। उदाहरण के लिए, इस प्रयास करें:
import sys
os = sys.modules["os"]
अब आप os
मॉड्यूल का उपयोग करने की जैसे कि आपने import os
किया था सकेंगे।
ऐसा इसलिए है क्योंकि उस कोड ठीक है जब आप एक मॉड्यूल है कि पहले से ही लोड किया गया है का अनुरोध क्या एक import
बयान करता है। हालांकि, यदि आप अभी तक लोड नहीं किए गए मॉड्यूल के साथ कोड को आज़माएं, तो यह काम नहीं करेगा (आपको sys.modules
शब्दकोश से एक महत्वपूर्ण त्रुटि मिल जाएगी)। import
कथन वर्तमान नामस्थान में जोड़ने के अलावा नए मॉड्यूल लोड करता है। जबकि आप मैन्युअल रूप से नियमित आयात प्रणाली के आसपास मॉड्यूल लोड कर सकते हैं और आगे काम कर सकते हैं, ऐसा करने के लिए शायद ही कोई अच्छा कारण है।
एक नया खोल खोलें और चरणों को देखें। पोस्ट विवरण या बेहतर, अभी तक स्क्रीन शॉट्स। मॉड्यूल ओएस sys में नहीं रहता है। –