যেকোনো পাইথন ফাইল একটি মডিউল, এর নাম হলো ফাইলের বেস নাম/মডিউলের __name__ প্রপার্টি বাদ দিয়ে .py এক্সটেনশন। একটি প্যাকেজ হলো পাইথন মডিউলগুলোর একটি সংকলন, অর্থাৎ একটি প্যাকেজ হলো পাইথন মডিউল ধারণকারী একটি ডিরেক্টরি যাতে একটি অতিরিক্ত __init__.py ফাইল রয়েছে। __init__.py` এক প্যাকেজকে একটি সাধারণ ডিরেক্টরির থেকে আলাদা করে যেটি শুধু কন্টেইন করে পাইথন স্ক্রিপ্টগুলোর একটি বানচ। প্যাকেজها যেকোনো গভীরতায় নেস্টেড হতে পারে, শর্তে হলো সংশ্লিষ্ট ডিরেক্টরিগুলোর নিজস্ব __init__.py ফাইল থাকে।
যখন আপনি একটি মডিউল বা প্যাকেজ ইমপোর্ট করেন, পাইথন তৈরি করা সংশ্লিষ্ট অবজেক্ট সবসময় module টাইপের। এর মানে হলো মডিউল এবং প্যাকেজের পার্থক্য শুধু ফাইল সিস্টেম লেভেলে। মনে রাখবেন, যাই হোক, যখন আপনি একটি প্যাকেজ ইমপোর্ট করেন, শুধু সেই প্যাকেজের __init__.py ফাইলে থাকা ভেরিয়েবল/ফাংশন/ক্লাসগুলো সরাসরি ভিজিবল হয়, সাব-প্যাকেজ বা মডিউলগুলো না।
উদাহরণস্বরূপ, datetime` মডিউলে date` নামে একটি সাবমডিউল রয়েছে। আপনি যখন datetime` ইমপোর্ট করেন, সেটি ইমপোর্ট হয় না। আপনাকে সেটি আলাদা করে ইমপোর্ট করতে হবে।
>>> import datetime
>>> date.today()
Traceback (most recent call last):
File "", line 1, in
NameError: name 'date' is not defined
>>> from datetime import date
>>> date.today()
datetime.date(2017, 9, 1)