Python for AI/Functions, Modules ও Packages/Lesson 20
Packages ও pip
PyPI থেকে NumPy, Pandas, PyTorch install করা — pip-এর দরকারি command, requirements.txt, version pinning, আর semantic versioning কেন গুরুত্বপূর্ণ।
- সময়
- 20 মিনিট
- Exercise
- 1
- Challenge
- 1
- Quiz
- 3 প্রশ্ন
সহজ ভাষায়
- Module — একটা
.pyfile। - Package — কয়েকটা module একটা folder-এ সাজানো। যেমন
sklearnpackage-এর ভেতরেsklearn.linear_model,sklearn.metricsইত্যাদি। - PyPI (Python Package Index, pypi.org) — Python package-এর বিশাল "app store"। ৫ লাখের বেশি package।
- pip — PyPI থেকে package download আর install করার tool।
কেন দরকার?
তোমার AI Engineer হওয়ার পথের প্রায় সব tool PyPI থেকে আসে:
numpy -> numerical computing
pandas -> tabular data
matplotlib -> graph আঁকা
scikit-learn -> classic ML
torch -> deep learning
anthropic -> Claude API
fastapi -> ML model-কে API হিসেবে serve করা
আর একটা team-এ সবার computer-এ (আর server-এ) একই version থাকা জরুরি — নাহলে "আমার computer-এ তো চলে!" সমস্যা।
pip-এর দরকারি command
এগুলো Python-এর ভেতরে না, terminal-এ চালাতে হয় (এই browser playground-এ pip চলে না):
pip install numpy # সর্বশেষ version
pip install numpy==2.1.3 # নির্দিষ্ট version
pip install "pandas>=2.2,<3" # একটা range-এর ভেতরে
pip install --upgrade numpy # update
pip uninstall numpy # মুছে ফেলা
pip list # কী কী install আছে
pip show numpy # একটা package-এর তথ্য
Windows-এ বা একাধিক Python থাকলে
pipএর বদলেpython -m pipলেখা নিরাপদ — নিশ্চিত হওয়া যায় ঠিক কোন Python-এ install হচ্ছে।
Installed package-এর version দেখা
Code থেকেও version দেখা যায় — bug report বা reproducibility-র জন্য দরকারি:
(try/except আমরা Errors module-এ বিস্তারিত শিখবো — আপাতত জেনে রাখো, এটা error হলে program না থামিয়ে অন্য কাজ করতে দেয়।)
requirements.txt
Project-এর সব package আর version একটা file-এ লেখা থাকে:
# requirements.txt
numpy==2.1.3
pandas==2.2.3
scikit-learn==1.5.2
matplotlib==3.9.2
নতুন কেউ project clone করলে এক command-এ সব install:
pip install -r requirements.txt
আর তোমার বর্তমান environment থেকে file বানাতে:
pip freeze > requirements.txt
Semantic Versioning
বেশিরভাগ package version লেখে MAJOR.MINOR.PATCH আকারে:
2 . 1 . 3
| | +-- PATCH: bug fix — নির্ভয়ে update করা যায়
| +-------- MINOR: নতুন feature — পুরনো code চলবে
+-------------- MAJOR: breaking change — পুরনো code ভাঙতে পারে
এজন্য pandas>=2.2,<3 লেখা হয় — "২.২ বা নতুন, কিন্তু ৩ না"। Major version বদলালে নিজে পরীক্ষা করে তারপর update করা উচিত।
Version তুলনার ফাঁদ
String তুলনা অক্ষর ধরে ধরে হয় — "1" আর "9" তুলনা করে বলে দেয় 1.9 বড়! সংখ্যার tuple-এ রূপান্তর করলে ঠিক উত্তর আসে। Challenge-এ এটাই বানাবে।
Exercise
Exercise
requirements.txt পড়ো
parse_requirements(text) function লেখো যেটা requirements.txt-এর text নিয়ে dictionary return করে: package নাম → version।
- শুধু
name==versionআকারের লাইন নেবে - খালি লাইন আর
#দিয়ে শুরু হওয়া comment বাদ যাবে - আগে-পরের space কেটে ফেলবে
Quiz
Challenge
Challenge
কোন version নতুন?
is_newer(a, b) function লেখো — version string a যদি b-এর চেয়ে নতুন হয় তাহলে True, নাহলে False।
সাবধান: string হিসেবে তুলনা করলে ভুল হয় — "1.10.0" > "1.9.0" হওয়া উচিত True, কিন্তু string তুলনায় আসে False! আর "2.1" আর "2.1.0" সমান ধরতে হবে।
বাস্তবে কোথায় ব্যবহার হয়?
২০২৪ সালে NumPy 2.0 release হলো — একটা major version। হাজার হাজার project রাতারাতি ভেঙে গেল, কারণ তাদের requirements-এ লেখা ছিল শুধু numpy (pin করা ছিল না), আর নতুন install-এ 2.0 চলে এল যেটার সাথে তাদের অন্য package compatible ছিল না।
Production ML system-এ তাই সবসময়:
- প্রতিটা package-এর version pin করা থাকে
- Model-এর সাথে কোন version-এ train হয়েছে সেটা লিখে রাখা হয় (MLOps module-এ দেখবো — MLflow এটা নিজে থেকেই করে)
- Docker image-এ পুরো environment freeze করে রাখা হয়
Interview প্রশ্ন
- Beginner: requirements.txt কী, আর কেন দরকার?
- Intermediate:
pip install pandasআরpip install pandas==2.2.3-এর মধ্যে production-এর জন্য কোনটা ভালো, কেন? - Advanced: দুটো package একই dependency-র আলাদা version চাইলে (dependency conflict) কী হয়?
pip-tools,poetryবাuvএই সমস্যা কীভাবে সামলায়?
এরপর কী?
একটা project-এ NumPy 1.26 লাগে, আরেকটায় NumPy 2.1 — একই computer-এ দুটো কীভাবে? উত্তর: প্রতিটা project-এর নিজস্ব আলাদা environment। পরের lesson: Virtual Environments।