कैसे अजगर अपने मॉड्यूल पाता है
कड़ाई से लिया गया, एक मॉड्यूल एक अजगर फ़ाइल है, जबकि एक पैकेज एक फ़ोल्डर है जिसमें अजगर फाइलें होती हैं, नाम के साथ एक (खाली हो सकती है) फ़ाइल होती है __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