On this page
Virtual Environment & pip
แยกชุด library ของแต่ละโปรเจกต์ออกจากกัน เพื่อไม่ให้เวอร์ชันตีกัน
แต่ละโปรเจกต์ต้องการ library คนละชุด คนละเวอร์ชัน ถ้าติดตั้งรวมกันหมดจะตีกัน virtual environment (venv) คือ "กล่องแยก" ของแต่ละโปรเจกต์ — ทักษะพื้นฐานที่ทุกโปรเจกต์ Python จริงต้องใช้
ทำไมต้อง venv
ลองนึกภาพ: โปรเจกต์ A ต้องใช้ Django 3 แต่โปรเจกต์ B ต้องใช้ Django 5 ถ้าติดตั้งลงเครื่องรวมกันจะมีได้แค่เวอร์ชันเดียว venv แก้ปัญหานี้โดยให้แต่ละโปรเจกต์มีชุด library ของตัวเอง
สร้างและเปิดใช้งาน venv
# สร้าง venv ชื่อ .venv ในโฟลเดอร์โปรเจกต์
python -m venv .venv
# เปิดใช้งาน (activate)
source .venv/bin/activate # macOS / Linux
# .venv\Scripts\activate # Windows
# พอ activate แล้ว prompt จะมี (.venv) นำหน้า
# ปิดใช้งานเมื่อเสร็จ
deactivateติดตั้ง library ลงเครื่องส่วนกลาง (global) ทำให้ทุกโปรเจกต์ใช้ชุดเดียวกันจนตีกัน และทำให้ระบบรก — สร้าง venv ต่อโปรเจกต์เสมอ แล้ว activate ก่อน pip install ทุกครั้ง
pip — ติดตั้ง library
pip install requests # ติดตั้ง library
pip install requests==2.31.0 # ระบุเวอร์ชัน
pip list # ดูที่ติดตั้งแล้ว
pip uninstall requests # ถอนออกrequirements.txt — บันทึก dependency
เพื่อให้คนอื่น (หรือเครื่อง production) ติดตั้ง library ชุดเดียวกับเราได้ ให้บันทึกรายการลง requirements.txt
# บันทึกทุก library + เวอร์ชันปัจจุบันลงไฟล์
pip freeze > requirements.txt
# คนอื่นติดตั้งตามได้ด้วยคำสั่งเดียว
pip install -r requirements.txtโฟลเดอร์ .venv ใหญ่และเฉพาะเครื่อง — ใส่ใน .gitignore เสมอ แล้วเอาแค่ requirements.txt เข้า git คนอื่น clone ไปแล้วสร้าง venv + ติดตั้งตาม requirements เองได้
สรุปหัวข้อนี้
- venv = กล่อง library แยกต่อโปรเจกต์ ป้องกันเวอร์ชันตีกัน
- สร้าง: python -m venv .venv แล้ว activate ก่อนทำงาน
- pip install ติดตั้ง, pip freeze > requirements.txt บันทึก
- pip install -r requirements.txt ติดตั้งตามรายการ; .venv ใส่ .gitignore
1) สร้าง venv ในโฟลเดอร์โปรเจกต์แล้ว activate 2) pip install requests แล้ว pip list ดู 3) สร้าง requirements.txt ด้วย pip freeze 4) ลอง deactivate แล้วสังเกตว่า (.venv) หายจาก prompt