पैकेज को समझने के लिए, आपको मॉड्यूल के बारे में भी जानना होगा। कोई भी पायथन फ़ाइल एक मॉड्यूल है, इसका नाम .py एक्सटेंशन के बिना फ़ाइल का मूल नाम/मॉड्यूल की __name__ संपत्ति है। एक पैकेज पायथन मॉड्यूल का एक संग्रह है, अर्थात, एक पैकेज पायथन मॉड्यूल की एक निर्देशिका है जिसमें एक अतिरिक्त __init__.py फ़ाइल होती है। __init__.py एक निर्देशिका से एक पैकेज को अलग करता है जिसमें केवल पायथन लिपियों का एक समूह होता है। पैकेज को किसी भी गहराई तक नेस्ट किया जा सकता है, बशर्ते कि संबंधित निर्देशिकाओं में उनकी अपनी __init__.py फ़ाइल हो।
जब आप एक मॉड्यूल या पैकेज आयात करते हैं, तो पायथन द्वारा बनाई गई संबंधित वस्तु हमेशा प्रकार के मॉड्यूल की होती है। इसका मतलब है कि मॉड्यूल और पैकेज के बीच का अंतर सिर्फ फाइल सिस्टम स्तर पर है। ध्यान दें, हालांकि, जब आप कोई पैकेज आयात करते हैं, तो उस पैकेज की __init__.py फ़ाइल में केवल चर/फ़ंक्शन/वर्ग सीधे दिखाई देते हैं, उप-पैकेज या मॉड्यूल नहीं।
उदाहरण के लिए, डेटटाइम मॉड्यूल में दिनांक नामक एक सबमॉड्यूल होता है। जब आप डेटटाइम आयात करते हैं, तो इसे आयात नहीं किया जाएगा। आपको इसे अलग से आयात करना होगा।
>>> import datetime >>> date.today() Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'date' is not defined >>> from datetime import date >>> date.today() datetime.date(2017, 9, 1)