পাইথন মডিউল এবং প্যাকেজ
আজকে আমরা পাইথনের মডিউল ও প্যাকেজ সম্পর্কে জানার চেষ্টা করব । এবং এগুলো কিভাবে কাজ করে সেটা দেখব । আরও জানবো পাইথন কিভাবে তার মডিউল কে খুঁজে বের করে ।মডিউল কি ?
যেকোনো সিঙ্গেল পাইথন ফাইল কে বলা হয় মডিউল । আমরা যেকোনো পাইথন ফাইল যেটা .py দিয়ে শেষ হয় সেটাকে আমরা যেকোনো পাইথন স্ক্রিপ্ট থেকে import করতে পারি । অনেক বড় প্রোগ্রাম কে ছোট ছোট অংশে ভাগ করার জন্য মডিউল আমাদের কে সাহায্য করে ।মনে করি আমাদের arithmatic.py নামে একটা পাইথন ফাইল আছে । ফাইলটি আপনি এখন যে ডিরেক্টরিরে আছে সেই ডিরেক্টরিতেই থাকতে হবে । এবং এটার মধ্যে নিচের জিনিসগুলো আছে ।
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# create a file say arithmatic.py in the same directory | |
# arithmatic.py file contains | |
OPERATIONS = ['Add', 'Sub'] | |
def add(a, b): | |
return a + b | |
def sub(a, b): | |
return a - b | |
এখন আমি যদি একই ডিরেক্টরিতে থাকি তবে এই arithmatic.py ফাইল কে নিচের মত করে import করতে পারব । এবং এর ফাংশন ও ভারিয়েবল কে ব্যবহার করতে পারব ।
প্যাকেজ কি ?
উপরে আমরা দেখলাম যে আমরা যদি কোন মডিউল কে অন্য একটা মডিউল থেকে import করতে চাই তবে মডিউল গুলো কে একই ডিরেক্টরিতে রাখতে হয় । এটা একটা সমস্যা । এই সমস্যা দূর করার জন্যই মূলত পাকেজিং সিস্টেম । এর মাধ্যমে আমরা আমাদের লেখা বিভিন্ন পাইথন মডিউল কে ভিন্ন ভিন্ন ডিরেক্টরির আন্ডারে রাখতে পারি । এবং সেগুলোকে আমাদের প্রয়োজন অনুসারে import করতে পারব ।
রিয়েল লাইফ সফটওয়্যারে আমারা দেখি যে বিভিন্ন .py ফাইল ভিন্ন ভিন্ন ডিরেক্টরিতে থাকে এবং সবগুলো জিনস আবার একটা রুট ডিরেক্টরিতে থাকে । আমাদের প্যাকেজ যদি ইন্সটল করা থাকে তবে আমরা যেকোনো জায়গা থেকে এটাকে import করতে পারি ।
প্যাকেজ হল একটা ডিরেক্টরি যেটা থেকে আমরা পাইথন মডিউল import করতে পারি ।
প্যাকেজ কিভবে তৈরি করা যায় ?
আগেই বলেছি প্যাকেজ হল এটা ডিরেক্টরি / ফোল্ডার । সুতরাং প্যাকেজ বানাতে হলে প্রথমে আপানকে একটা ডিরেক্টরি / ফোল্ডার বানাতে হবে । মনে করি আমরা gonit নামে একটা ডিরেক্টরি তৈরি করেছি । এখন পাইথন কে বোঝাতে হবে যে আমরা যে ডিরেক্টরি তৈরি করেছি সেটা কোন সাধারণ ডিরেক্টরি না এটা একটা পাইথন প্যাকেজ । এটা বোঝানোর জন্য আমাদের কে ওই gonit ডিরেক্টরি তে init.py নামে একটা ফাইল তৈরি করতে হবে ( এটা ফাঁকাও থাকতে পারে ) । নিচে একটা ডিরেক্টরির গঠন নিচে দেখানো হল ।
gonit/
__init__.py
arithmatic.py
পাকজে ও মডিউল থেকে import করা
আমরা যদি উপরেই নিয়মে যদি প্যাকেজ বানায়ে থাকি তবে আমরা অনন্য প্যাকেজ যেভাবে import করে সেভাবেই import করতে পারব । আমদের বানানো প্যাকেজের জন্য import stement গুলো এই রকম হবে ।
পাইথন কিভাবে মডিউল ও প্যাকেজ কে খুঁজে বের করে ?
আমরা যখন কোন পাইথনের মডিউল বা প্যাকেজ কে import করি তখন পাইথন কে একটা বিষয় অবশ্যই জানতে হবে যে, পাইথন যে মডিউল বা প্যাকেজ কে import করতে চাচ্ছে সেটাকে সে কথাই খুঁজবে । বিশেষ কিছু ডিরেক্টরি আছে কোন কিছু import করলে পাইথন সেই বিশেষ ডিরেক্টরিতে মডিউল বা প্যাকেজ খুজতে থাকে । সেই বিশেষ ডিরেক্টরি গুলো হল,
- The current directory.
- The site-packages folder যেখানে আপনার পাইথন ইন্সটল করা আছে ।
- In directories in the PYTHONPATH environment variable.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
for path in sys.path: | |
print("Path is: ", path) | |
Path is: | |
Path is: /home/menon/anaconda3/lib/python35.zip | |
Path is: /home/menon/anaconda3/lib/python3.5 | |
Path is: /home/menon/anaconda3/lib/python3.5/plat-linux | |
Path is: /home/menon/anaconda3/lib/python3.5/lib-dynload | |
Path is: /home/menon/anaconda3/lib/python3.5/site-packages | |
Path is: /home/menon/anaconda3/lib/python3.5/site-packages/Sphinx-1.5.1-py3.5.egg | |
Path is: /home/menon/anaconda3/lib/python3.5/site-packages/setuptools-27.2.0-py3.5.egg | |
Path is: /home/menon/anaconda3/lib/python3.5/site-packages/tflearn-0.3.2-py3.5.egg | |
Path is: /home/menon/anaconda3/lib/python3.5/site-packages/IPython/extensions | |
Path is: /home/menon/.ipython | |
আজকে পর্যন্তই । এতক্ষণ কষ্ট করে পড়ার জন্য ধন্যবাদ :
Comments
Post a Comment