Virtual Environment in Python: `venv` এর আদ্যপান্ত

এই পোস্টে Python এর virtual environment টুল venv নিয়ে আলোচনা করা হয়েছে। Python 3.3 এবং এর পরের ভার্সনগুলিতে ডিফল্ট ভাবে থাকা এই টুলটি ব্যবহারে প্রতিটি প্রজেক্টের জন্য নির্দিষ্ট dependency সহজেই ম্যানেজ করা সম্ভব।

Virtual Environment in Python: `venv` এর আদ্যপান্ত

একজন ডেভেলপার হিসাবে সবসময়ই একাধিক প্রজেক্টে কাজ করতে হয়। প্রতিটি প্রজেক্টের জন্য আলাদা লাইব্রেরি দরকার হয়, আবার একেক প্রজেক্টে একই লাইব্রেরির বিভিন্ন ভার্সন দরকার হয় । এতে অনেক সময় dependency conflict তৈরি হয়, যেমন:

Project A এর জন্য দরকার হতে পারে FastAPI==0.68
আবার Project B এর জন্য দরকার লেটেস্ট ভার্সন FastAPI==0.85

এখন আপনি যদি global ভাবে প্রথমে FastAPI 0.68 ইনস্টল করেন এবং পরে FastAPI 0.85 ইনস্টল করেন, তাহলে পুরোনো ইনস্টলেশন ওভাররাইট হয়ে যাবে। দেখা যাবে Project A ঠিকঠাক কাজ করছে না ।

এই সমস্যার সমাধানের জন্যই Python এর virtual environment ব্যবহার করা হয়। এটি আপনাকে প্রতিটি প্রজেক্টের জন্য একটি isolated environment তৈরি করতে সাহায্য করে, যেখানে খুব সহজেই প্রতিটি প্রজেক্টের dependency আলাদাভাবে ম্যনেজ করা যায়।

এই dependency ম্যনেজমেন্ট এর জন্য অনেক টুল রয়েছে - যেমন - venv, pipenv, poetry, conda, virtualenv ইত্যাদি।

আমরা এখানে আলোচনা করবো - venv এর ব্যবহার।
venv হলো Python এর অফিসিয়াল ভার্চুয়াল এনভায়রনমেন্ট টুল। এটি Python 3.3 এর পর থেকে ডিফল্ট ভাবে ইনস্টল করাই থাকে।

Step 01: পাইথন ভার্সন চেক

python --version

# Output
Python 3.8.10

Python ভার্সন 3.3 এর উপরে হলে আপনি venv ব্যবহার করতে পারবেন।

Step 02: ভার্চুয়াল এনভায়রনমেন্ট তৈরি

প্রথমে একটি ডিরেক্টরি তৈরি করুন যেখানে আপনি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করতে চান। এখানে আমি myProject নামে একটি ডিরেক্টরি তৈরি করলাম।

mkdir myProject 
cd myProject

এখন ভার্চুয়াল এনভায়রনমেন্ট তৈরি করুন।

python -m venv myenv

এখানে myenv হলো আপনার ভার্চুয়াল এনভায়রনমেন্টের নাম। আপনি যেকোন নাম দিতে পারেন। এখানে যেই নাম ব্যবহার করবেন, সেই নামের একটি ডিরেক্টরি তৈরি হবে। এই ডিরেক্টরিতে কি আছে তা একটু পরে দেখবো ।
venv হলো একটি পাইথন মডিউল যা আপনার ভার্চুয়াল এনভায়রনমেন্ট তৈরি করে। এটি আপনার পাইথন ইনস্টলেশনের সাথেই ছিল।

তাহলে এখন আপনার ডিরেক্টরির অবস্থা হবে এরকম:

myProject/
    └── myenv/

Step 03: ভার্চুয়াল এনভায়রনমেন্ট Activate

ভার্চুয়াল এনভায়রনমেন্ট অ্যাক্টিভেট করতে নিচের কমান্ডটি ব্যবহার করুন:

source myenv/bin/activate

এই কমান্ড চালানোর পরে আপনার টার্মিনাল দেখতে হবে এরকম:

(myenv) $

এখন আপনার ভার্চুয়াল এনভায়রনমেন্ট অ্যাক্টিভেট হয়েছে। এখন আপনি যেই প্যকেজ বা লাইব্রেরী ইনস্টল করবেন, সেগুলো শুধুমাত্র এই ভার্চুয়াল এনভায়রনমেন্টে ইনস্টল হবে।
টার্মিনাল এ (myenv) দেখে বুঝতে পারবেন যে আপনি এখন ভার্চুয়াল এনভায়রনমেন্টে আছেন।

এখন ইচ্ছা মতন প্যকেজ ইনস্টল করতে পারেন।

(myenv) $ pip install fastapi==0.68

Step 04: ভার্চুয়াল এনভায়রনমেন্ট Deactivate

কাজ শেষ হলে ভার্চুয়াল এনভায়রনমেন্ট থেকে বের হতে হলে নিচের কমান্ডটি ব্যবহার করুন:

deactivate

এই কমান্ড চালানোর পরে আপনার টার্মিনাল আবার আগের মতো হবে। এবং (myenv) লেবেল মুছে যাবে।

$

Note:
আপনি যদি git ব্যবহার করেন তাহলে myenv ডিরেক্টরি টি .gitignore ফাইলে যোগ করুন। এটি আপনার গিট রিপোজিটরি তে আপলোড হবে না।

myProject/
    └── .git/
    └── myenv/
    └── .gitignore # এই ফাইলে myenv/ যোগ করুন

venv এর সুবিধাঃ

ডিফল্ট ভাবে ইন্সটল থাকে তাই অতি সহজে ব্যবহার করা যায়। আলাদা কোন প্যাকেজ ইন্সটল করার দরকার নেই।

venv এর অসুবিধাঃ

ধরা যাক, সিস্টেমে python ভার্সন 3.8 ইন্সটল আছে এবং আপনি একটি প্রজেক্টে python 3.10 বা অন্য কোন ভার্সন ব্যবহার করতে চান। তাহলে এই ক্ষেত্রে venv ব্যবহার করা যাবে না। এই ক্ষেত্রে অন্য কোন টুল যেমন - conda, pyenv, poyetry ব্যবহার করতে হবে।

এগুলো নিয়ে পরের কোন পোস্টে আলোচনা করবো।