Back to Blog

เลิกใช้ Pip แล้วชีวิตดีขึ้น: จบปัญหา Python บวม ด้วย UV

22 Lab Team
December 15, 2025
12 min read
Backend Development
เลิกใช้ Pip แล้วชีวิตดีขึ้น: จบปัญหา Python บวม ด้วย UV

Intro: ทำไมผมถึงยอมหักดิบเลิกใช้ Pip?

ถ้าคุณเป็น Python Developer ที่เขียนโค้ดมาสักพัก คุณน่าจะเคยเจอปัญหาความ “เทอะทะ” ของ Ecosystem เก่าๆ:

  • จะเริ่มโปรเจกต์ที ต้องลง pyenv จัดการเวอร์ชัน
  • ต้องสร้าง venv แยก
  • ต้อง pip install ที่รอจนหลับ โดยเฉพาะโปรเจกต์ Data Science ใหญ่ๆ
  • พอจะ Deploy ขึ้น CI/CD ก็เปลือง Runtime นาทีละหลายบาทเพราะมัวแต่รอ install packages

ผมเองก็เจอปัญหานี้ จนกระทั่งได้ลอง UV (Unified Virtualenv) เครื่องมือตัวใหม่จากทีม Astral (ผู้สร้าง Ruff) ที่เคลมว่า “เร็วระดับสายฟ้าแลบ” หลังจากลองใช้จริง ผมพบว่ามันไม่ใช่แค่เร็ว แต่เปลี่ยน Workflow การทำงานแบบ All-in-one จนผมลืม Pip ไปเลย

บทความนี้จะพาคุณไปดูวิธีใช้งานแบบเจาะลึก พร้อมเทคนิคพิเศษที่หาอ่านที่อื่นยาก: การตั้งค่า Project ให้ AI Assistant (อย่าง Cursor หรือ ChatGPT) รู้จัก UV เพื่อให้ช่วยเราเขียนโค้ดได้ลื่นไหลที่สุด

1. The “Speed Demon”: ทำไมความเร็วถึงเปลี่ยนชีวิต (และเงินในกระเป๋า)

หลายคนอาจบอกว่า “รอ Pip นิดหน่อยจะเป็นไรไป” แต่ในโลกของ CI/CD ทุกวินาทีคือ “ต้นทุน” ครับ

ประสบการณ์จริง:

จากที่ผมทดสอบ โปรเจกต์ขนาดกลางที่มี dependencies ประมาณ 50 ตัว:

  • Pip: ใช้เวลา install ประมาณ 1-2 นาที (บน GitHub Actions)

  • UV: ใช้เวลา install ต่ำกว่า 5 วินาที (ด้วย caching mechanism ที่ฉลาดกว่ามาก)

สิ่งที่ได้คืนมา:

  • ลดระยะเวลา Deploy Pipeline ลงได้เกือบ 50%

  • ถ้าคุณรัน Pipeline วันละ 20 รอบ เดือนนึงคุณประหยัด Runtime ได้หลายชั่วโมง = ประหยัดค่า Cloud Credit ได้จริง

🧐 Deep Dive: ความลับของความเร็ว (Why Rust Matters?)

หลายคนสงสัยว่าทำไมแค่เปลี่ยนภาษาเขียนจาก Python เป็น Rust ถึงเร็วขึ้นขนาดนี้? คำตอบไม่ได้อยู่ที่ภาษาอย่างเดียวครับ แต่อยู่ที่ Architecture ที่ UV ออกแบบมาใหม่หมด เพื่อแก้ Pain Point เดิมๆ ของ Pip:

  1. Global Cache & Hardlinks (ประหยัดที่เก็บข้อมูลแบบอัจฉริยะ):

    • Old Way (Pip): ถ้าคุณมี 10 โปรเจกต์ที่ใช้ pandas เหมือนกัน Pip จะดาวน์โหลดและ Copy ไฟล์ pandas แยกกัน 10 ที่ (เปลืองพื้นที่ Disk 10 เท่า และเสียเวลา Copy)

    • New Way (UV): ดาวน์โหลดลง Central Cache แค่ครั้งเดียว โปรเจกต์ไหนจะใช้ UV จะสร้าง “Hardlink” (Ref ระดับไฟล์ซิสเต็มที่เร็วเกือบ Instant) ไปที่ Cache นั้น ผลคือ การ Install เร็วขึ้นระดับ Milliseconds และไม่กินพื้นที่ Harddisk เพิ่มซ้ำซ้อน

  2. Parallel Resolution (คิดพร้อมกันหลายหัว):

    • Pip ทำงานแบบ Sequential (ทำทีละอย่าง) ในการแก้สมการ Dependency

    • UV ใช้พลังของ Rust ในการแตก Thread เพื่อคำนวณและดาวน์โหลดหลายๆ แพ็กเกจพร้อมกัน เต็ม Bandwidth ที่เครื่องคุณมี ทำให้ใช้ทรัพยากรคุ้มค่าที่สุด

2. All-in-One: ลบ 3 Tools ทิ้ง แล้วเหลือ UV ตัวเดียว

สิ่งที่ทำให้ผมชอบ UV มากกว่าแค่เรื่องความเร็ว คือความ “คลีน” ครับ เมื่อก่อนเราต้องมี:

  • pyenv (จัดการ Python version)

  • virtualenv/venv (สร้าง environment)

  • pip (ลงของ)

แต่โลกใหม่ของ UV: คุณไม่ต้องลง Python ลงเครื่องด้วยซ้ำ! UV จัดการให้หมด:

# ไม่ต้องมี python ในเครื่อง สั่งรันได้เลย uv จะไปโหลดมาให้เอง
uv run --python 3.12 main.py

คำสั่งเดียวจบ ไม่ต้องจำ source venv/bin/activate อีกต่อไป มันทำให้เครื่อง Dev ของเราสะอาดมาก ไม่รกไปด้วย Python หลายเวอร์ชันที่ตีกันมั่ว

3. The “AI-Native” Workflow: สอน LLM ให้ใช้ UV เป็น (Highlight)

นี่คือส่วนสำคัญที่หลายคนยังไม่รู้ครับ ยุคนี้เราเขียนโค้ดกับ AI (Copilot, Cursor, Windsurf) แต่ถ้าเราไม่ “บอก” มัน AI จะติดนิสัยเดิมคือใช้ pip หรือ python -m venv ซึ่งจะทำให้ Environment ของเราพังได้

เพื่อให้การทำงานแบบ Modern Python สมบูรณ์แบบ ผมแนะนำให้สร้างไฟล์ Rules/Instructions ไว้ในโปรเจกต์เพื่อให้ AI เข้าใจบริบทครับ

วิธีการ (How-to):

สร้างไฟล์ .cursorrules (สำหรับ Cursor) หรือใส่ใน Custom Instructions ของโปรเจกต์:

# AI Coding Instructions for This Project

**Package Manager:**
- This project uses **UV** exclusively. DO NOT use `pip` or `python -m venv`.
- To add packages: Use `uv add <package_name>` (NOT `pip install`).
- To run scripts: Use `uv run <script.py>`.
- To sync dependencies: Use `uv sync`.

**Environment:**
- Do not manually activate venv. Use `uv run` to execute commands in the isolated environment automatically.
- Python version is managed by `.python-version` file.

**Lockfile:**
- Always respect `uv.lock`. If you add a dependency, ensure the lockfile is updated.

ผลลัพธ์ที่ได้: เมื่อคุณสั่งให้ AI “ลง library pandas ให้หน่อย”

  • Before: AI จะพิมพ์ pip install pandas (ซึ่งผิดคอนเซปต์โปรเจกต์เรา)

  • After: AI จะพิมพ์ uv add pandas ให้อัตโนมัติ ถูกต้องตาม Workflow เป๊ะ!

4. Migration Guide: ย้ายบ้านแบบเจ็บตัวน้อยที่สุด

สำหรับคนที่ชินกับ Pip หรือ Poetry การติดตั้งและการย้ายมา UV อาจจะดูเหมือนยุ่งยากในตอนแรก (โดยเฉพาะการ set path) แต่จริงๆ ง่ายกว่าที่คิดครับ

Step 1: Install UV (แบบทีเดียวจบ)

# MacOS / Linux
curl -LsSf [https://astral.sh/uv/install.sh](https://astral.sh/uv/install.sh) | sh

# Windows (PowerShell)
powershell -c "irm [https://astral.sh/uv/install.ps1](https://astral.sh/uv/install.ps1) | iex"

Step 2: เริ่มต้นโปรเจกต์ แทนที่จะ git init แล้วสร้าง venv เอง ให้ใช้:

uv init my-new-project
cd my-new-project
uv add requests # ลงของ
uv run hello.py # รันเลย

Step 3: สำหรับโปรเจกต์เก่า (ที่มี requirements.txt)

uv pip install -r requirements.txt
# หรือแปลงเป็น uv native
uv add -r requirements.txt

5. UV Cheat Sheet: รวมคำสั่งที่ใช้บ่อย (เซฟเก็บไว้ดูได้เลย)

สรุปคำสั่งสำคัญที่คุณต้องใช้ในชีวิตประจำวัน เรียงตามลำดับการทำงานจริงครับ

🛠️ Installation & Setup

Action Command
ติดตั้ง UV (Mac/Linux) curl -LsSf https://astral.sh/uv/install.sh | sh
ติดตั้ง UV (Windows) powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
อัปเดต UV เป็นเวอร์ชันล่าสุด uv self update

🚀 Project Initialization

Action Command
สร้างโปรเจกต์ใหม่ uv init <project-name>
ระบุ Python Version uv python pin 3.12 (สร้างไฟล์ .python-version)
สร้าง Virtualenv (Auto) ไม่ต้องทำเอง! uv run จะสร้างให้อัตโนมัติเมื่อรันครั้งแรก

📦 Dependency Management

Action Command Note
ลง Package ใหม่ uv add pandas เร็วกว่า pip install มาก
ลง Dev Dependencies uv add --dev pytest สำหรับ Library ที่ใช้แค่ตอนเทส
ลบ Package uv remove pandas -
Sync Environment uv sync ให้ venv ตรงกับ uv.lock (ใช้ตอน pull โค้ดเพื่อนมา)

▶️ Running Code

Action Command
รันไฟล์ Python uv run main.py
รันคำสั่ง module uv run -m pytest
รัน Tool ชั่วคราว uvx ruff check .

Conclusion: ถึงเวลา Move on หรือยัง?

ถ้าคุณทำงานคนเดียว โปรเจกต์เล็กๆ pip ก็ยังใช้ได้ครับ ไม่ผิดอะไร แต่ถ้าคุณ:

  1. เบื่อกับการรอ install นานๆ
  2. อยากประหยัดงบ CI/CD
  3. อยากให้เครื่อง Dev สะอาด ไม่ต้องลง Python หลายตัว
  4. ทำงานร่วมกับ AI แล้วอยากได้ Workflow ที่เป็นระเบียบ

UV คือคำตอบที่คุ้มค่าแก่การลงทุนเรียนรู้ใหม่ครับ ลองเริ่มจากโปรเจกต์เล็กๆ วันนี้ แล้วตั้งค่า AI Context ตามที่ผมแนะนำ รับรองว่าชีวิต Dev จะลื่นขึ้นแบบรู้สึกได้ทันที

PythonUVPackage ManagerDevOpsAI WorkflowDeveloper Tools

Related Articles

EventStorming ฉบับมือใหม่: เครื่องมือวิเคราะห์ระบบที่ทีม Tech ควรรู้จัก
Backend Development

EventStorming ฉบับมือใหม่: เครื่องมือวิเคราะห์ระบบที่ทีม Tech ควรรู้จัก

เรียนรู้ EventStorming เครื่องมือทำเวิร์กช็อปที่ช่วยให้ทีม Business และ Tech เข้าใจระบบร่วมกัน ผ่านการวิเคราะห์ Domain Events...

July 8, 2025
15 min
Read More
รีวิว Vector Database ตัวไหนเหมาะที่สุด
AI & Machine Learning

รีวิว Vector Database ตัวไหนเหมาะที่สุด

เปรียบเทียบ Milvus, ChromaDB, Qdrant, Pgvector จากประสบการณ์จริง พร้อมคำแนะนำสำหรับ RAG ภาษาไทยและต้นทุนแฝงที่ต้องรู้...

December 20, 2025
10 min
Read More
ลดความเสี่ยงโดนแฮก! วิธีใช้ OSV.dev ทำ Vulnerability Scanner และ Patching จบในที่เดียว
Security

ลดความเสี่ยงโดนแฮก! วิธีใช้ OSV.dev ทำ Vulnerability Scanner และ Patching จบในที่เดียว

เรียนรู้การใช้ OSV-Scanner จาก Google สแกนหาช่องโหว่ในโปรเจกต์ Node.js, Docker Image และตรวจสอบ License ได้ฟรี แม่นยำกว่า npm audit...

August 5, 2025
18 min
Read More