Skip to content
GitHub

Virtual Environments & Packages

ပြဿနာဆိုတာ ဘာလဲ?

Section titled “ပြဿနာဆိုတာ ဘာလဲ?”

Package တွေကို pip install နဲ့ တိုက်ရိုက် Install လုပ်လိုက်ရင် System Python ထဲကို သွားဝင်သွားပါတယ်။ ဒါဆိုရင် ဘာဖြစ်မလဲ:

  • Project A မှာ requests version 2.28 ကို လိုချင်တယ်
  • Project B မှာ requests version 2.31 ကို လိုချင်တယ်

ဒါမျိုးဖြစ်ရင် System Python တစ်ခုတည်းမှာ နှစ်ခုလုံး ထည့်ထားလို့ မရပါဘူး — ဒါကို Dependency Conflict လို့ ခေါ်ပါတယ်။ ရန်ကုန်မှာ ဆိုင်နှစ်ဆိုင် ဖွင့်ထားတဲ့ ဆိုင်ရှင်တစ်ယောက်က ဆိုင်တစ်ဆိုင်မှာ “Halal ရိုးရိုး ရေ” လိုအပ်ပြီး အခြားဆိုင်မှာ “Halal Special ရေ” လိုသလိုမျိုးပေါ့ — တူညီတဲ့ Package ရဲ့ Version နှစ်မျိုးကို တပြိုင်နက်တည်း အသုံးပြုလို့ မရပါဘူး။

Virtual Environment Isolation

Virtual Environment (venv) ဆိုတာ Project တစ်ခုချင်းစီအတွက် သီးသန့် Python ပတ်ဝန်းကျင် ဖန်တီးပေးတဲ့ Tool ပါ။ ဒီ Folder လေးထဲမှာပဲ Packages တွေကို ထည့်ထားတာဖြစ်လို့ Project တစ်ခုနဲ့တစ်ခု ရောနှောသွားတာမျိုး မဖြစ်တော့ပါဘူး။


Project Folder ထဲကို အရင်ရောက်အောင်သွားပြီးမှ Terminal မှာ ဒီ Command ကို Run ပေးပါ:

Terminal window
python -m venv .venv

.venv ဆိုတာ venv Folder ရဲ့ နာမည်ပါ — . (ဒေါ့) နဲ့ စထားတာကြောင့် File Explorer မှာ Hidden ဖိုင်အနေနဲ့ နေပါလိမ့်မယ်။ env, venv, .env စသဖြင့် ကိုယ်ကြိုက်တဲ့နာမည် ပေးနိုင်ပါတယ်။


venv ဆောက်ပြီးရုံနဲ့ မရသေးပါဘူး — Activate (ဖွင့်) ပေးမှသာ အသုံးပြုနိုင်မှာ ဖြစ်ပါတယ်:

Windows (Command Prompt / PowerShell):

Terminal window
.venv\Scripts\activate

Mac / Linux:

Terminal window
source .venv/bin/activate

Activate လုပ်ပြီးသွားရင် Terminal ရဲ့ ရှေ့မှာ (.venv) ဆိုပြီး ပြပေးပါလိမ့်မယ်:

(.venv) C:\Users\Aung\my-project>

ဒါလေးပြနေပြီဆိုရင် venv ထဲ ရောက်သွားပြီလို့ သိရပါမယ်။


venv Activate လုပ်ပြီးသွားမှသာ pip install ကို သုံးပေးပါ:

Terminal window
pip install requests
pip install pandas
pip install django==4.2 # Version သတ်မှတ်ပြီး Install လုပ်ခြင်း

ဘာတွေ Install လုပ်ထားသလဲ စစ်ဆေးချင်ရင်:

Terminal window
pip list
Package Version
---------- -------
requests 2.31.0
certifi 2023.7.22
...

requirements.txt — Project Dependencies မှတ်တမ်း

Section titled “requirements.txt — Project Dependencies မှတ်တမ်း”

Project ကို GitHub ပေါ်တင်မယ် (သို့) တခြားလူတစ်ယောက်ကို ပေးမယ်ဆိုရင် Install လုပ်ထားတဲ့ Package တွေရဲ့ စာရင်း လိုအပ်ပါတယ်။ ဒီစာရင်းကို requirements.txt ဖိုင်မှာ သိမ်းထားလေ့ရှိပါတယ်:

Terminal window
# ကိုယ် Install လုပ်ထားတဲ့ Package တွေကို ဖိုင်ထဲ ထည့်သိမ်းခြင်း
pip freeze > requirements.txt

requirements.txt ဖိုင်ကို ဖွင့်ကြည့်ရင် ဒီလိုမျိုး တွေ့ရပါမယ်:

certifi==2023.7.22
charset-normalizer==3.3.2
idna==3.4
requests==2.31.0
urllib3==2.0.7

တစ်ယောက်ယောက်က ခင်ဗျားရဲ့ Project ကို ယူပြီး Package တွေ အကုန် Install လုပ်ချင်တယ်ဆိုရင်:

Terminal window
pip install -r requirements.txt

venv ကနေ ပြန်ထွက်ချင်ရင်:

Terminal window
deactivate

Terminal မှာ (.venv) ပျောက်သွားပြီဆိုရင် System Python ကို ပြန်သုံးနေပြီလို့ သိနိုင်ပါတယ်။


.gitignore မှာ venv ကို ဖယ်ထားခြင်း

Section titled “.gitignore မှာ venv ကို ဖယ်ထားခြင်း”

venv Folder ဟာ Package တွေ အများကြီး ပါဝင်နေတာကြောင့် Git Repo ထဲကို မတင်သင့်ပါဘူး (File Size အရမ်း ကြီးသွားလို့ပါ)။ ဒါကြောင့် .gitignore ဖိုင်မှာ အောက်ပါအတိုင်း ထည့်ပေးပါ:

.venv/
__pycache__/
*.pyc

ပုံမှန် Workflow — Project အသစ်တစ်ခု စတင်ချိန်

Section titled “ပုံမှန် Workflow — Project အသစ်တစ်ခု စတင်ချိန်”
Terminal window
# ၁. Folder ဖန်တီးခြင်း
mkdir my-project
cd my-project
# ၂. venv ဆောက်ခြင်း
python -m venv .venv
# ၃. Activate လုပ်ခြင်း (Windows အတွက် ဥပမာ)
.venv\Scripts\activate
# ၄. Package Install လုပ်ခြင်း
pip install requests
# ၅. Code ရေးခြင်း (main.py ဖန်တီးပြီး ... စရေးပါမယ်)
# ၆. Requirements သိမ်းဆည်းခြင်း (Project ပြီးရင် သို့မဟုတ် Git Push မလုပ်ခင်)
pip freeze > requirements.txt