Ko'p Python o'rganuvchilar bir xil xatoni qiladi: barcha paketlarni global muhitga o'rnatadi. Bu bir loyihada ishlaydi, lekin ikkita loyiha turli versiyani talab qilganda — muammo boshlanadi. Virtual environment bu muammoni to'liq hal qiladi.
Muammo nima — konkret misol
Loyiha A: Django 3.2 kerak
Loyiha B: Django 4.2 kerak
Global o'rnatish:
pip install django==3.2 ← Loyiha A ishlaydi
pip install django==4.2 ← Loyiha A buziladi!
Virtual environment bilan har bir loyihaning o'z alohida "quticha"si bo'ladi — biri ikkinchisiga ta'sir qilmaydi.
Virtual environment yaratish
# Loyiha papkasiga kiring
cd mening_loyiham
# Virtual environment yarating ("venv" nom — an'anaviy)
python -m venv venv
# Fayl tuzilishi:
# mening_loyiham/
# venv/ ← bu papkani GitHub'ga yuklamang!
# main.py
Faollashtirish
# Windows (Command Prompt)
venv\Scripts\activate
# Windows (PowerShell)
venv\Scripts\Activate.ps1
# Linux va macOS
source venv/bin/activate
# Faollashgandan keyin terminal shunday ko'rinadi:
(venv) C:\mening_loyiham>
(venv) ko'rinsa — siz virtual muhitdasiz. Endi o'rnatgan paketlar faqat shu loyihaga tegishli.
Paket o'rnatish
# Bitta paket
pip install django
# Muayyan versiya
pip install django==4.2.7
# Bir nechta bir vaqtda
pip install django pillow requests
# Paketlar ro'yxatini ko'rish
pip list
requirements.txt — loyihani boshqaga uzatish
# Barcha o'rnatilgan paketlarni faylga saqlash
pip freeze > requirements.txt
# requirements.txt ichida:
# Django==4.2.7
# Pillow==10.1.0
# requests==2.31.0
Boshqa kishi loyihangizni olsa, shu fayldan o'rnatadi:
# Yangi muhit yaratib
python -m venv venv
source venv/bin/activate
# Barcha kerakli paketlarni o'rnatish
pip install -r requirements.txt
.gitignore — venv'ni GitHub'ga yuklamang
# .gitignore faylini yarating va shu qatorni yozing:
venv/
__pycache__/
*.pyc
.env
venv papkasi yuzlab megabayt bo'lishi mumkin. Uni GitHub'ga yuklash shart emas — requirements.txt yetarli.
Ko'p uchraydigan xatolar
Xato 1: Virtual environment'ni faollashtirmasdan paket o'rnatish — u global muhitga o'rnatiladi.
Xato 2: venv papkasini GitHub'ga yuklash — .gitignore'ga qo'shishni unutish.
Xato 3: pip freeze > requirements.txt ni loyiha tugagach emas, har yangi paket o'rnatgandan keyin bajarish kerak.
Maslahat: Har yangi loyiha boshlaganda birinchi ish — virtual environment yaratish. Bu oddiy ko'rinadi, lekin kelajakda ko'p muammolarni oldini oladi.
+2
+0
+0
+0
+0
+0
+0