Notes & software courses · Free to learn
Aph's Blog
On this page

Virtual Environment & pip

👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ

แยกชุด library ของแต่ละโปรเจกต์ออกจากกัน เพื่อไม่ให้เวอร์ชันตีกัน

แต่ละโปรเจกต์ต้องการ library คนละชุด คนละเวอร์ชัน ถ้าติดตั้งรวมกันหมดจะตีกัน virtual environment (venv) คือ "กล่องแยก" ของแต่ละโปรเจกต์ — ทักษะพื้นฐานที่ทุกโปรเจกต์ Python จริงต้องใช้

ทำไมต้อง venv

ลองนึกภาพ: โปรเจกต์ A ต้องใช้ Django 3 แต่โปรเจกต์ B ต้องใช้ Django 5 ถ้าติดตั้งลงเครื่องรวมกันจะมีได้แค่เวอร์ชันเดียว venv แก้ปัญหานี้โดยให้แต่ละโปรเจกต์มีชุด library ของตัวเอง

สร้างและเปิดใช้งาน venv

bash
# สร้าง venv ชื่อ .venv ในโฟลเดอร์โปรเจกต์
python -m venv .venv

# เปิดใช้งาน (activate)
source .venv/bin/activate      # macOS / Linux
# .venv\Scripts\activate       # Windows

# พอ activate แล้ว prompt จะมี (.venv) นำหน้า
# ปิดใช้งานเมื่อเสร็จ
deactivate
อย่า pip install ลง global

ติดตั้ง library ลงเครื่องส่วนกลาง (global) ทำให้ทุกโปรเจกต์ใช้ชุดเดียวกันจนตีกัน และทำให้ระบบรก — สร้าง venv ต่อโปรเจกต์เสมอ แล้ว activate ก่อน pip install ทุกครั้ง

pip — ติดตั้ง library

bash
pip install requests           # ติดตั้ง library
pip install requests==2.31.0   # ระบุเวอร์ชัน
pip list                       # ดูที่ติดตั้งแล้ว
pip uninstall requests         # ถอนออก

requirements.txt — บันทึก dependency

เพื่อให้คนอื่น (หรือเครื่อง production) ติดตั้ง library ชุดเดียวกับเราได้ ให้บันทึกรายการลง requirements.txt

bash
# บันทึกทุก library + เวอร์ชันปัจจุบันลงไฟล์
pip freeze > requirements.txt

# คนอื่นติดตั้งตามได้ด้วยคำสั่งเดียว
pip install -r requirements.txt
.venv ไม่เข้า git

โฟลเดอร์ .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