कैसे अजगर अपने मॉड्यूल पाता है
कड़ाई से लिया गया, एक मॉड्यूल एक अजगर फ़ाइल है, जबकि एक पैकेज एक फ़ोल्डर है जिसमें अजगर फाइलें होती हैं, नाम के साथ एक (खाली हो सकती है) फ़ाइल होती है __init__.py, अजगर को बताने के लिए यह मॉड्यूल से आयात करने के लिए एक पैकेज है। दोनों ही मामलों में, मॉड्यूल को उनके .pyविस्तार की आवश्यकता होती है , लेकिन उन्हें आयात किए बिना किया जाता है (नीचे और देखें)।
डिफ़ॉल्ट रूप से, पायथन अपने मॉड्यूल और पैकेज की तलाश करता है $PYTHONPATH।
$ PYTHONPATH में क्या शामिल है, यह जानने के लिए, अजगर में निम्नलिखित कोड चलाएँ (3):
import sys
print(sys.path)
डायरेक्टरी कैसे जोड़े
कभी कभी
एक अजगर फ़ाइल के भीतर से, आप अपने अजगर आवेदन या स्क्रिप्ट के मुख्य भाग में निम्नलिखित पंक्तियों को जोड़कर कभी-कभी डिफ़ॉल्ट पथ पर पथ जोड़ सकते हैं:
import sys
sys.path.insert(0, "/path/to/your/package_or_module")
उदाहरण के लिए:
यदि मेरे पास एक फ़ोल्डर है: /home/myname/pythonfilesऔर मैं module_1.pyउस निर्देशिका में स्थित फ़ाइल को आयात करना चाहता हूं, तो मैं इसे अपने कोड के मुख्य भाग में जोड़ता हूं:
import sys
sys.path.insert(0, "/home/myname/pythonfiles")
और मैं बस module_1.pyद्वारा फ़ाइल आयात कर सकते हैं :
import module_1
जब मैं एक पैकेज बनाता हूं और पैकेज से मॉड्यूल आयात करना चाहता हूं, तो मुझे एक फ़ोल्डर बनाने की आवश्यकता है $PYTHONPATH, जिसमें मॉड्यूल शामिल हैं, एक (खाली हो सकता है) फ़ाइल के साथ कहा जाता है__init__.py
उदाहरण के लिए:
एक पैकेज (फ़ोल्डर) कहा जाता है से आयात करने के लिए my_packageमें /home/myname/pythonfiles, जोड़ने के /home/myname/pythonfilesअपने के लिए पथ $PYTHONPATH, उदाहरण 1 में की तरह, और मॉड्यूल बुलाया आयात module_2.py(पैकेज फ़ोल्डर के अंदर) बस के साथ: `
from <packagename> import module_2
निर्देशिकाओं को $PYTHONPATHस्थायी रूप से जोड़ना :
अपनी ~/.profileफ़ाइल में निम्न पंक्ति जोड़ें ।
export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add
उप-निर्देशिकाएं
एक पैकेज के भीतर से, उपनिर्देशिकाएं उस तरह शामिल नहीं हैं; आपको निर्देशिकाओं को "चेन" करने की आवश्यकता है। एक मॉड्यूल आयात करने के लिए module_3.py, फ़ोल्डर के subfolderअंदर फ़ोल्डर के अंदर packagename:
import packagename.subfolder.module_3
इस तथ्य को देखते हुए कि पैकेज में सभी सबफ़ोल्डर्स में अपनी __init__.pyफ़ाइल शामिल है।
जब एक मॉड्यूल स्क्रिप्ट या एप्लिकेशन के समान निर्देशिका में होता है
जब स्क्रिप्ट या एप्लिकेशन के समान निर्देशिका में है, तो मॉड्यूल को पथ सम्मिलित करने की कोई आवश्यकता नहीं है, यह स्वचालित रूप से जोड़ा जाता है।
उदाहरण:
अगर मेरे पास एक फ़ोल्डर है, जिसमें मैं script.pyऔर module.pyमैं बस मॉड्यूल आयात कर सकता हूं:
import module
__init__.pyआपके फोल्डर में फाइल है? यह कैसे अजगर पैकेज बनाता है और आपको उस पैकेज से मॉड्यूल आयात करने की अनुमति देता है। guide.python-distribute.org/creation.html