Python virtual environment ও packaging: পরিষ্কার সেটআপ
প্রতিটি প্রকল্পে একটি virtual environment dependency-র দ্বন্দ্ব ঠেকায়। venv, requirements ফাইল ও ন্যূনতম pyproject.toml শিখুন।

দুটি প্রকল্পের জন্য একই library-র দুটি আলাদা সংস্করণ লাগে। দুটিই global ইনস্টল করলে একটি ভাঙে। Virtual environment (venv) এটি সারায়: একটি ফোল্ডার যাতে শুধু একটি প্রকল্পের জন্য Python interpreter-এর নিজস্ব লিংক ও ইনস্টল করা package থাকে। প্রত্যেক Python ডেভেলপারের উচিত অভ্যাস করে প্রতি প্রকল্পে একটি বানানো। নিচের venv command প্রকাশের আগে চালানো।
প্রতিদিনের ধারা
python3 -m venv .venv # create the environment in the project folder
source .venv/bin/activate # Windows: .venv\Scripts\activate
python -m pip install requests # installs into .venv only
python -m pip freeze > requirements.txt
deactivate
.venvশুধু একটি ফোল্ডার। যেকোনো সময় মুছে আবার বানান;requirements.txtরাখলে কিছু হারায় না।- সাধারণ
pip-এর বদলেpython -m pipব্যবহার করুন। এতে যে Python চালাচ্ছেন তারই pip ব্যবহার নিশ্চিত হয়। .gitignore-এ.venv/যোগ করুন। কখনও commit করবেন না।
ভেতরে আছেন কি না দেখুন
import sys
print(sys.prefix.endswith(".venv"), sys.base_prefix != sys.prefix) # True when you are inside a venv
$ python3 -m venv venvdemo
$ ./venvdemo/bin/python -c "import sys; print(sys.prefix.endswith('venvdemo'), sys.base_prefix != sys.prefix)"
True True
$ ./venvdemo/bin/python -m pip list
Package Version
------- -------
pip 25.1.1
$ ./venvdemo/bin/python -m pip freeze | wc -l
0
নতুন environment-এ শুধু pip থাকে, তাই pip freeze কিছুই দেখায় না। এটিই উদ্দেশ্য: আপনার প্রকল্প শুধু যা চায় তাই পায়।
লিখে রাখা ও আবার গড়া
pip freeze > requirements.txtইনস্টল হওয়া সঠিক সংস্করণ লেখে। অন্য মেশিনে:python -m pip install -r requirements.txt।- চাইলে দুটি ফাইল রাখুন: আপনার বাছা ছোট তালিকা (
requests) আর পুরো frozen তালিকা। - অ্যাপে সংস্করণ pin করুন (পুনরুৎপাদনযোগ্য), কিন্তু library-তে পরিসর দিন (যাতে ব্যবহারকারী মেলাতে পারে)।
এক মিনিটে packaging
অন্যরা, বা আপনি অন্য মেশিনে, প্রকল্পটি ইনস্টল করবেন এমন হলে pyproject.toml-এ বর্ণনা দিন:
[project]
name = "invoice-tool"
version = "0.1.0"
requires-python = ">=3.10"
dependencies = ["requests>=2.31"]
[project.scripts]
invoice = "invoice_tool.cli:main"
[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"
এটি configuration, output নয়; নিশ্চিত হতে আপনার মেশিনে python -m pip install . বা python -m build চালান। code রাখুন একটি package ফোল্ডারে (invoice_tool/), সঙ্গে __init__.py। [project.scripts] লাইনটি একটি invoice command বানায়।
সাধারণ ভুল
- সিস্টেমের Python-এ ইনস্টল (
sudo pip install) করে অপারেটিং সিস্টেমের টুল ভাঙা। venv ব্যবহার করুন। - activate করতে ভুলে import ব্যর্থ হলে অবাক হওয়া।
which pythonদেখুন। .venvবা__pycache__ফোল্ডার commit করা।- সংস্করণ pin না করা, তাই এক মাস পর dependency আপডেটে অ্যাপ ভাঙে।
- কয়েকটি প্রকল্পে একটি environment ব্যবহার।
- venv ফোল্ডার অন্য মেশিনে কপি করা: এতে absolute path থাকে। আবার বানান।
মূল কথা: প্রতি প্রকল্পে একটি venv, ভেতরে python -m pip, আবার গড়তে requirements.txt, আর ইনস্টলযোগ্য করতে pyproject.toml।
Programming roadmaps সিরিজ, পর্ব ৩ (ভালো Python লেখা): 1 নম্বর (মোট 5)। আগের লেখা: Software testing-এর গোড়া: test pyramid ও কী test করবেন.


