মডিউল এবং প্যাকেজ

পাইথনের স্ট্যান্ডার্ড লাইব্রেরিতে অনেক গুলো মডিউল রয়েছে। যে গুলো আমরা আমাদের প্রজেক্টে ইম্পোর্ট করতে পারি এবং মডিউলের মেথড গুলো ব্যবহার করতে পারি। যেমন বিভিন্ন গাণিতিক কাজ কর্ম করার জন্য math, সময় নিয়ে কাজ করার জন্য time, কমা সেপারেটেড ফাইল নিয়ে কাজ করার জন্য csv ইত্যাদি অনেক গুলো। সব গুলো সম্পর্কে জানা যাবে এখানেঃ https://docs.python.org/3.4/library/ এগুলোতে একবার চোখ বুলিয়ে নেওয়া যেতে পারে। কোন মডিউল দিয়ে কি করা যায়, এসব জানলেই হবে। এরপর যখন দরকার হবে রেফারেন্স দেখে আমাদের প্রজেক্টে প্রয়োগ করতে পারব।
এ অধ্যায় আমরা দুই একটা উদাহরণ দেখব।

Math স্ট্যান্ডার্ড লাইব্রেরি
math.ceil(x)
ceil এর কাজ হচ্ছে একটা ফ্লোটিং পয়েন্ট এর পরের ইন্টিজার ভ্যালু দেওয়া। পরের বলতে যদি একটা ফ্লোটিং পয়েন্ট ভ্যালু হয় 6.2 এটার ceil ভ্যালু হবে 7, যদিও আমরা সাধারনত 6.2 এর কাছা কাছি ইন্টিজার হিসেব করি 6। আবার 6.9 এর ceil ভ্যালু হচ্ছে 7।

import math
print (math.ceil(6.2 ))

আউটপুট পাবো 7
math.floor(x)
floor এর ক্ষেত্রে হয় ceil এর উলটো। ফ্লোট্রিং পয়েন্টের দশমিক মান যত বড়ই হোক, floor আমাদের তার আগের ইন্টিজার ভ্যালুটি আমাদের দিবে। আগের বলতে যদি একটা ফ্লোটিং পয়েন্ট ভ্যালু হয় 6.9 এটার floor ভ্যালু হবে 6, যদিও আমরা সাধারনত 6.9 এর কাছা কাছি ইন্টিজার হিসেব করি 7।

import math

print (math.floor(6.9))

আউটপুট পাবো 6

sqrt
sqrt একটা সংখ্যার বর্গমূল বের করার জন্য ব্যবহার করা হয়ঃ

import math
print (math.sqrt(9))

আউটপুট পাবো 3.0
sin, cos, ten এসবের মান ও আমরা সহজে বের করতে পারি। যেমন
math.cos(x) রেডিয়ানের cos ভ্যালু দিবে আমাদের। cos (0) এর মান আমরা জানি ১, প্রোগ্রামটি রান করালে তাই আউটপুট পাবো আমরাঃ

import math
print (math.cos(0))

এভাবে ম্যাথ লাইব্রেরীর অন্যান্য মেথড গুলো আমরা দেখে নিতে পারি।
Random স্ট্যান্ডার্ড লাইব্রেরী
random লাইব্রেরী ব্যবহার করে আমরা রেন্ডম নাম্বার তৈরি করতে পারি। যেমনঃ

import random
random.random()

এটি আমাদের ০-১ এর মধ্যে একটা রেন্ডম নাম্বার দিবে। আমরা ইচ্ছে করলে একটা রেঞ্জ দিয়ে দিতে পারি। যার মধ্যে আমরা রেন্ডম নাম্বারটি চাইঃ

import random
print (random.randrange(10))

এটি আমাদের ১ থেকে ১০ এর মধ্যে যে কোন একটা রেন্ডম নাম্বার দিবে।
আমরা চাইলে নির্দিষ্ট রেঞ্জের ভেতর রেন্ডম নাম্বার তৈরি করতে পারি, যেমনঃ

import random
print ( random.randrange(20 , 100 ))

এটি ২০-১০০ এর মধ্যে একটা রেন্ডম নাম্বার দিবে।

পাইথন মডিউল ও PyPi

আমরা যখন বড় সড় কোন প্রজেক্টে কাজ করব, তখন প্রজেক্টের এক একটা ফিচার এক একটা ফাইলে আলাদা করে রাখব। আর এই আলদা করে রাখাটাই হচ্ছে মডিউল। মডিউল আকারে কোড লিখলে অন্য যে কোন প্রজেক্টে ঐ একই মডিউল ব্যবহার করতে পারি। আরেকটা সুবিধে হচ্ছে বিতরণ। আমরা চাইলে মডিউল তৈরি করে যে কারো কাছে আমাদের মডিউল বিতরণ করতে পারি।
মডিউল আর কিছুইই না, আলাদা একটা ফাইল। ফাইলের নাম হচ্ছে মডিউলের নাম। যেমন odds.py নামে আমাদের একটা মডিউল আছে। যার মধ্যে get_odds নামে একটা মেথড রয়েছে। যেটাকে কল করলে আমাদের কিছু বিজোড় সংখ্যার লিস্ট দিবে। কল করার সময় আমরা বলে দিতে পারব কয়টা কত পর্যন্ত লিস্ট চাচ্ছি। তো এমন একটা মডিউলটা সহজেই আমরা তৈরি করে নিতে পারি। PyCharm ব্যবহার করে থাকলে প্রজেক্টের উপর রাইট ক্লিক করে New >File এ ক্লিক করব।

এরপর ফাইলের একটা নাম দিব। যেমন odds.py। এরপর এতে নিচের কোড গুলো লিখবঃ

def get_odds(n):

result = []
    
b = 1

while b < n:
    
result.append(b)

    b +=2

    return result

অন্য যে কোন আইডিইতেও একই ভাবে ফাইল তৈরি করা যাবে। শুধু খেলার রাখতে হবে প্রজেক্ট মানে মূল ফাইলটা যে ফোল্ডারে, রয়েছে, odds.py ও একই ফোল্ডারে যেন থাকে।
এবার আমরা আমাদের মূল প্রোগ্রামে এই মডিউলটা ইম্পোর্ট করে ব্যবহার করতে পারব এভাবেঃ

import odds

print(odds.get_odds(10))

পাইথনের স্ট্যান্ডার্ড প্যাকেজের মতই আমরা ইম্পোর্ট করতে পারি। ইম্পোর্ট করতে হয় ফাইলের নাম ব্যবহার করে। odds.py হচ্ছে আমাদের ফাইলের না, এখানে .py অংশটা লিখতে হয় না।

get_odds হচ্ছে odds মডিউলের একটা মেথড। আমরা এরপর একে কল করলাম। প্যারামিটার হিসেবে পাস করেছি ১০। এটি আমাদের ১-১০ পর্যন্ত বিজোড় সংখ্যা গুলোর লিস্ট রিটার্ণ করবে। এরপর আমরা তা প্রিন্ট করেছি।

আমরা এখানে খুব সহজ একটা মডিউল তৈরি করেছি। কিন্তু আমরা শিখে গিয়েছি কিভাবে মডিউল তৈরি করা যায়। কি ভাবে মডিউলকে ব্যবহার করতে হয়। এবার চাইলে নিজের ক্রিয়েটিভিটি প্রয়োগ করে প্রয়োজন অনুযায়ী যে কোন মডিউল তৈরি করে নিতে পারব।

থার্ড পার্টি মডিউল

পাইথনের স্ট্যান্ডার্ড লাইব্রেরীর মডিউল গুলো ছাড়াও আমরা থার্ড পার্টি মডিউল ব্যবহার করতে পারি। প্রোগ্রামাররা যে কোড গুলো লিখে সবার ব্যবহার করার জন্য উন্মুক্ত করে দিয়েছে, আমরা সে সব কোড গুলোও আমাদের প্রজেক্টে ব্যবহার করতে পারি। মডিউল হচ্ছে একটা একক ফাইল, যার মধ্যে অনেক গুলো ফাংশন বা মেথড থাকে। অনেক গুলো ফাইল মিলে তৈরি হয় একটা প্যাকেজ। এক একটা প্যাকেজ এক একটা কাজে ব্যবহার করা যায়। এমন থার্ড পার্টি প্যাকেজের ইন্ডেক্স হচ্ছে PyPi। সবার জন্য উমুক্ত  সব গুলো প্যাকেজের লিস্ট পাওয়া যাবে https://pypi.org/ ঠিকানায়। এখানে ভিজিট করলে দেখতে পাবো অনেক গুলো প্যাকেজ। আমাদের নিজেদের প্রজেক্টে এসব প্যাকেজের যে কোনটাই আমরা ব্যবহার করতে পারব। আমাদের জন্য দরকারী অনেক কোড আগে থেকেই লেখা রয়েছে। নিজেরা শুরু থেকে না লিখে আগের কোড ব্যবহার করলে অনেক সময়ই তো বেঁচে যাবে।

PyPi এর প্যাকেজ গুলো ব্যবহার করার জন্য আমাদের pip ইন্সটল করে নিতে হবে। pip ব্যবহার করে ঐ প্যাকেজ গুলো আমরা কম্পিউটারে ডাউনলোড  করতে পারব। এরপর প্রজেক্টে ইম্পোর্ট করে প্রজেক্টে ব্যবহার করতে পারব। পাইথনের স্ট্যান্ডার্ড লাইব্রেরী প্যাকেজ গুলো যেভাবে ব্যবহার করা যায়, ঠিক সেভাবে। যদিও python.org থেকে পাইথন ডাউনলোড করে ইন্সটল করলে পিপ ঐ পাইথনের সাথেই ইন্সটল করা থাকে। এরপরও যদি কারো কম্পিউটারে pip ইন্সটলের দরকার পড়ে, তাহলেদুইভাবে pip ইন্সটল করা যায়।

  • ensurepip
  • get-pip.py

ensurepip ব্যবহার করে: ensurepip পাইথনের সাথে এখন বিল্টইন দেওয়া দেওয়া থাকে। তাই ensurepip ব্যবহার করে pip ইন্সটল করা সহজ। ensurepip ব্যবহার করে pip ইন্সটলের জন্য এই কমান্ড লিখলেই পিপ ইন্সটল হয়ে যাবে।

উইন্ডোজেঃ


py -m ensurepip --upgrade

ম্যাক অথবা লিনাক্সেঃ


python -m ensurepip --upgrade

get-pip.py ব্যবহার করেঃ https://pip.pypa.io/en/stable/installation/ এখানে গিয়ে get-pip.py পাইথন ফাইলটা কম্পিউটারে সেভ করতে হবে। যেমন আমরা সেভ করলাম Desktop এ। এরপর কমান্ডলাইনে ডিরেক্টরি পরিবর্তন করে Desktop এ এসে নিচের কমান্ডটা রান করলে Pip আমাদের কম্পিউটারে ইনস্টল হবেঃ
python get-pip.py

উইন্ডোজে লিখতে হবেঃ


py get-pip.py

এরপর pip ব্যবহার করে দরকারি যে কোন প্যাকেজ আমরা ইন্সটল করে নিতে পারব।

 

পাইথন মডিউল নিয়ে কাজ করতে গেলে কোথাও দেখন মডিউল, কোথাও দেখব প্যাকেজ, কোথাও দেখব লাইব্রেরি লেখা। আমাদের মনে প্রশ্ন জাগতে পারে এসব কোনটা কি জিনিস।
মডিউলঃ মডিউল হচ্ছে একটা মাত্র ফাইল। যেখানে কিছু ফাংশন বা মেথড, কিছু ভ্যারিয়েবল থাকে। তো ঐ ফাইলটা ইম্পোর্ট করে আমরা এর বিভিন্ন ফাংশন গুলো ব্যবহার করতে পারি।
প্যাকেজঃ অনেক গুলো মডিউলের সমষ্টি হচ্ছে একটা প্যাকেজ। দেখা যায় একটা কাজ করতে অনেক গুলো ফাংশনের দরকার হয়। তো এই ফাংশন গুলো একই ফাইলে হলে দেখা যাবে কোড লিখতে এবং পড়তে কষ্ট হয়ে যাবে। এই জন্য ছোট ছোট মডিউল করে এক সাথে ব্যবহার করাই হচ্ছে প্যাকেজের কাজ।
লাইব্রেরিঃ লাইব্রেরিকে বলা যায় অনেক গুলো প্যাকেজের সমষ্টি। কিছু কিছু কাজ আছে যেখানে অনেক গুলো প্যাকেজ লাগতে পারে। একটা নির্দিষ্ট টাইপের কাজ গুলো করতে যে যে প্যাকেজ গুলোর দরকার হতে পারে, সব এক সাথে থাকলে তাকে বলতে পারি লাইব্রেরি। ডেটাবেজে ডেটা রাখা, ডেটাবেজ থেকে ডেটা বের করে আনা সহ ডেটা নিয়ে যে সব কাজ করা যায় তার জন্য পাওয়া যায় লাইব্রেরি।
ফ্রেমওয়ার্কঃ বড় বড় অ্যাপলিকেশন গুলোতে দেখা যায় অনেক গুলো কাজ করা যায়। যেমন ডেটা কালেকশন, ডেটা প্রেজেন্টেশন, ডেটা এনালাইসিস, মেশিন লার্নিং ইত্যাদি। তো ডেটা কালেকশনের জন্য দরকার পড়বে একটা লাইব্রেরি, ডেটা প্রেজেন্টেশনের জন্য দরকার পড়বে আরেকটা লাইব্রেরি, ডেটা এনালাইসিস এর জন্য লাগবে আরেকটা লাইব্রেরি। একটা প্রজেক্টে যা যা লাগতে পারে, এর সব কিছু একত্রে বলতে পারি ফ্রেমওয়ার্ক।

NumPy
পাইথনে ব্যবহৃত অনেক জনপ্রিয় একটা লাইব্রেরি হচ্ছে NumPy। এই NumPy এর পূর্ণরুপ হচ্ছে Numerical Python। সাইন্টিফিক কম্পিউটিং এর জন্য এই লাইব্রেরি বিখ্যাত। বিভিন্ন ম্যাথম্যাটিক্যাল কম্পিউটিং এর জন্য দরকারি সব ফাংশন রয়েছে এই লাইব্রেরিতে। পাইথনে অ্যারে নিয়ে কাজ করতেও আমরা এই NumPy ব্যবহার করতে পারি।
NumPy নিয়ে কাজ করতে চাইলে আমাদের প্রথমে এটি ইন্সটল করে নিতে হবে। আর তা করতে পারি pip ব্যবহার করেঃ

pip install numpy 

তাহলে কম্পিউটারে NumPy ইন্সটল হয়ে যাবে। এখন চাইলে NumPy আমাদের প্রজেক্টে ব্যবহার করতে পারব। NumPy ব্যবহার করে নিউম্যারিক্যাল ডেটার নিয়ে কাজ করতে পারি। যেমনঃ

import numpy as np
numbers = [1, 2, 3, 4, 5]
print(np.mean(numbers))
print(np.median(numbers))
print(np.std(numbers))

আউটপুট পাবোঃ

3.0
3.0
1.4142135623730951

এখানে কিছু সংখ্যার একটা লিস্ট নিয়ে ঐ লিস্টের Mean, Median এবং Standard Deviation বের করার একটা প্রোগ্রাম লিখেছি।

5 thoughts on “মডিউল এবং প্যাকেজ”

    • রাইট ক্লিক করে সেভ করার অপশন পাবেন। CD(Chnage Directory) use করে। যেমন cd Desktop

  1. Vaiya ami nije package create kore kivave use korbo akto easy vabe jodi bolten please..ami youtube dke try korci..but Traceback (most recent call last):
    File “”, line 1, in
    import circle
    ImportError: No module named circle aita ase…kindly jodi help korten..

    Reply
  2. ভাই প্যাকেজ ম্যানাজার কি? আপনার লেখা অনেক সুন্দর।

    Reply

Leave a Reply