Virtual Environment in Python: `venv` এর আদ্যপান্ত
এই পোস্টে Python এর virtual environment টুল venv নিয়ে আলোচনা করা হয়েছে। Python 3.3 এবং এর পরের ভার্সনগুলিতে ডিফল্ট ভাবে থাকা এই টুলটি ব্যবহারে প্রতিটি প্রজেক্টের জন্য নির্দিষ্ট dependency সহজেই ম্যানেজ করা সম্ভব।
একজন ডেভেলপার হিসাবে সবসময়ই একাধিক প্রজেক্টে কাজ করতে হয়। প্রতিটি প্রজেক্টের জন্য আলাদা লাইব্রেরি দরকার হয়, আবার একেক প্রজেক্টে একই লাইব্রেরির বিভিন্ন ভার্সন দরকার হয় । এতে অনেক সময় 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
ব্যবহার করতে হবে।
এগুলো নিয়ে পরের কোন পোস্টে আলোচনা করবো।