মূল content-এ যাও

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 — একটা .py file।
  • Package — কয়েকটা module একটা folder-এ সাজানো। যেমন sklearn package-এর ভেতরে 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-র জন্য দরকারি:

main.py

(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 তুলনার ফাঁদ

main.py

String তুলনা অক্ষর ধরে ধরে হয় — "1" আর "9" তুলনা করে বলে দেয় 1.9 বড়! সংখ্যার tuple-এ রূপান্তর করলে ঠিক উত্তর আসে। Challenge-এ এটাই বানাবে।

Exercise

Exercise

requirements.txt পড়ো

+20 XP

parse_requirements(text) function লেখো যেটা requirements.txt-এর text নিয়ে dictionary return করে: package নাম → version।

  • শুধু name==version আকারের লাইন নেবে
  • খালি লাইন আর # দিয়ে শুরু হওয়া comment বাদ যাবে
  • আগে-পরের space কেটে ফেলবে
solution.py

Quiz

  1. Q1Package আর module-এর পার্থক্য কী?
  2. Q2Semantic versioning-এ 2.1.3 থেকে 3.0.0-তে গেলে সাধারণত কী বোঝায়?
  3. Q3pip install numpy==2.1.3 আর pip install numpy-এর পার্থক্য কী?
0/3 answered

Challenge

Challenge

কোন version নতুন?

+50 XP

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" সমান ধরতে হবে।

solution.py

বাস্তবে কোথায় ব্যবহার হয়?

২০২৪ সালে 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।