29 พ.ค. เวลา 05:39 • การศึกษา

UV คืออะไร?

โดย
นักพัฒนา Python ส่วนใหญ่มักคุ้นเคยกับความล่าช้าในการรอคำสั่ง pip install สำหรับโปรเจกต์ขนาดใหญ่ รวมถึงความยุ่งยากในการสลับใช้เครื่องมือหลายตัว เช่น venv, pip-tools หรือ pyenv เพื่อจัดการสภาพแวดล้อมจำลองปัญหานี้ถูกมองว่าเป็นเรื่องปกติในระบบนิเวศ Python มาเป็นเวลานาน
uv คือเครื่องมือที่เข้ามาเปลี่ยนโฉมวงการนี้ พัฒนาโดย Astral (ทีมผู้สร้าง Ruff เครื่องมือตรวจสอบโค้ดภาษา Python ที่เร็วที่สุด) โดย uv ถูกเขียนขึ้นด้วยภาษา Rust และออกแบบมาเพื่อทดแทนเครื่องมือเดิมถึง 7 ชนิด ได้แก่ pip, pip-tools, pipx, poetry, pyenv, twine และ virtualenv ด้วยความเร็วที่เหนือกว่า pip ถึง 10-100 เท่า จนสามารถย่นระยะเวลาการทำงานจากหลักนาทีให้เสร็จสิ้นได้ในเวลาไม่ถึงวินาที
ในเดือนพฤษภาคม 2026 นี้ uv ได้กลายเป็นเครื่องมือมาตรฐานใหม่ที่ได้รับความนิยมอย่างสูงในวงการ Python มียอดดาวน์โหลดหลายล้านครั้ง และ ได้รับการยอมรับจากองค์กรเทคโนโลยีชั้นนำทั่วโลก
  • ​uv คืออะไร?
uv (อ่านว่า ยูวี) คือตัวจัดการแพ็กเกจและสภาพแวดล้อม Python แบบครบวงจร (All-in-one) พัฒนาด้วยภาษา Rust เพื่อแก้ปัญหาเรื้อรังด้านความเร็ว ความซับซ้อนของชุดคำสั่ง และ ความแม่นยำในการจำลองสภาพแวดล้อมซ้ำ (Reproducibility) โดยทำหน้าที่ทดแทนเครื่องมือเดิมผ่านคำสั่งเฉพาะต่างๆ ดังนี้
- ทำหน้าที่ติดตั้งแพ็กเกจ แทนที่เครื่องมือเดิมอย่าง pip โดยใช้คำสั่ง uv pip install
- ทำหน้าที่สร้างล็อกไฟล์แทนที่เครื่องมือเดิมอย่าง pip-tools หรือ poetry โดยใช้คำสั่ง uv lock
- ทำหน้าที่จัดการเวอร์ชัน Python แทนที่เครื่องมือเดิมอย่าง pyenv โดยใช้คำสั่ง uv python install
- ทำหน้าที่รันเครื่องมือชั่วคราว แทนที่เครื่องมือเดิมอย่าง pipx โดยใช้คำสั่ง uvx
- ทำหน้าที่จัดการโปรเจกต์ แทนที่เครื่องมือเดิมอย่าง poetry โดยใช้คำสั่ง uv init หรือ uv add
- ทำหน้าที่สร้าง Virtual Env แทนที่เครื่องมือเดิมอย่าง virtualenv หรือ venv โดยใช้คำสั่ง uv venv
- ทำหน้าที่เผยแพร่แพ็กเกจ แทนที่เครื่องมือเดิมอย่าง build หรือ twine โดยใช้คำสั่ง uv build หรือ uv publish
  • ​uv ทำงานอย่างไร?
1) สถาปัตยกรรมที่ใช้ Rust
ความเร็วระดับพลิกโฉมของ uv เกิดจากการพัฒนาด้วยภาษา Rust ต่างจาก pip ดั้งเดิมที่เขียนด้วย Python และติดข้อจำกัดเรื่อง GIL (Global Interpreter Lock) ซึ่งปิดกั้นการประมวลผลขนาน จุดแข็งของ Rust ช่วยให้ uv มีประสิทธิภาพสูงในหลายด้าน
- ทำงานแบบ Multi-threading ได้สมบูรณ์ : ดาวน์โหลดและแยกวิเคราะห์แพ็กเกจต่างๆ ควบคู่กันได้จริงโดยไม่มี GIL ขัดขวาง
- เป็น Native Code : โค้ดของ Rust ถูกคอมไพล์ให้ทำงานได้เร็วเทียบเท่าภาษา C/C++
- จัดการหน่วยความจำไร้ขยะ : ใช้ระบบ Ownership model ควบคุมหน่วยความจำโดยไม่ต้องพึ่งพาระบบ Garbage Collector
- วิเคราะห์ dependencies ขนานกัน : สามารถประมวลผลโครงสร้างความเชื่อมโยงที่ซับซ้อน (เช่น แพ็กเกจ Apache Airflow) ได้ในเวลาเพียงเสี้ยววินาที
2) กลไก Dependency Resolution
uv ใช้ PubGrub algorithm (เช่นเดียวกับที่ใช้ในภาษา Elm และ เครื่องมือ Poetry) ในการวิเคราะห์หาแพ็กเกจเกี่ยวเนื่อง ซึ่งมีประสิทธิภาพสูงกว่าระบบ Brute-force ของ pip
จากการทดสอบประสิทธิภาพเชิงวิชาการในการจัดการสเปกแพ็กเกจที่ซับซ้อนของ Apache Airflow พบข้อมูลเปรียบเทียบดังนี้
⚪ uv : ใช้เวลาประมวลผลเฉลี่ยเพียง 0.21 วินาที และ ใช้พลังงาน 2.15 จูล
⚪ poetry : ใช้เวลาประมวลผลเฉลี่ย 5.15 วินาที และ ใช้พลังงาน 66.65 จูล
⚪ pip-tools : ใช้เวลาประมวลผลเฉลี่ยสูงถึง 13.89 วินาที และ ใช้พลังงาน 148.75 จูล
ตัวเลขนี้ชี้ให้เห็นว่า uv ทำงานเร็วกว่า poetry ถึง 24 เท่า และ ช่วยประหยัดพลังงานตัวเครื่องได้มากกว่า 30 เท่า
3) ระบบ Global Cache และ Hard Links
uv ใช้ระบบคลังเก็บข้อมูลส่วนกลาง (Global Cache) ไว้ที่โฟลเดอร์ ~/.cache/uv เมื่อมีการติดตั้งแพ็กเกจที่เคยดาวน์โหลดไว้แล้วในโปรเจกต์อื่น uv จะใช้วิธีสร้างลิงก์เชื่อมโยงไฟล์จากแคชส่วนกลางผ่านระบบ Hard links (บน Linux) หรือ Reflinks (บน macOS) แทนการคัดลอกไฟล์ซ้ำ
ผลลัพธ์แบบ Warm Install (กรณีมีแคชอยู่แล้ว) : uv ใช้เวลาติดตั้งเพียง 0.61 วินาที และ กินพลังงานเพียง 9.56 จูล ขณะที่ pip ต้องใช้เวลานานถึง 21 วินาที และ กินพลังงานสูงถึง 308 จูล
ประหยัดพื้นที่จัดเก็บข้อมูล : ไดรฟ์ในเครื่องไม่บวมจากการเก็บไฟล์แพ็กเกจซ้ำซ้อนกันหลายโฟลเดอร์
4) การจัดการ Virtual Environment แบบ Built-in
คำสั่ง uv venv สามารถสร้างสภาพแวดล้อมจำลองได้เร็วกว่าคำสั่งมาตรฐาน python -m venv ถึง 10-100 เท่า โดยบนเครื่อง macOS สถาปัตยกรรม M-Series นั้น uv ใช้เวลาเพียง 10 มิลลิวินาที ในขณะที่วิธีเดิมต้องใช้เวลาราว 800 มิลลิวินาที นอกจากนี้ uv ยังยึดรูปแบบการจัดการโปรเจกต์เป็นหลัก (Project-first)
⚪ คำสั่ง uv init จะสร้างโฟลเดอร์สภาพแวดล้อมจำลอง .venv ให้ทันที
⚪ คำสั่ง uv run จะรันสคริปต์ภายใต้สภาพแวดล้อมจำลองโดยอัตโนมัติ โดยที่ผู้ใช้ไม่จำเป็นต้องรันคำสั่ง activate ก่อน
⚪ คำสั่ง uv sync จะตรวจสอบไฟล์กำหนดโครงสร้าง pyproject.toml และไฟล์ล็อก uv.lock เพื่อปรับปรุงสภาพแวดล้อมในเครื่องให้ตรงกันทั้งหมด
  • ​ประเภทและฟีเจอร์ของ uv
1) การจัดการแพ็กเกจพื้นฐาน (uv pip)
คำสั่งของ uv ได้รับการออกแบบให้รองรับสเปกและทำงานร่วมกับ pip เดิมได้สมบูรณ์แบบ ทำให้นักพัฒนาสามารถเปลี่ยนมาใส่คำสั่ง uv นำหน้าคำสั่งเดิมได้ทันที เช่น เปลี่ยนมาใช้ uv pip install requests แทนคำสั่งติดตั้งเดิม, ใช้ uv pip install -r requirements.txt สำหรับติดตั้งแบบกลุ่ม, ใช้ uv pip freeze > requirements.txt เพื่อส่งออกรายชื่อแพ็กเกจ และ ใช้ uv pip uninstall requests เพื่อลบแพ็กเกจออก
2) การบริหารโปรเจกต์สมัยใหม่ (Project Management)
uv มีระบบควบคุมโครงสร้างโปรเจกต์ที่สอดคล้องกับมาตรฐานสากล คล้ายคลึงกับเครื่องมือ Cargo ของภาษา Rust หรือเครื่องมือ Poetry ผ่านชุดคำสั่ง:
⚪ uv init my-project สำหรับเริ่มต้นโปรเจกต์ใหม่
⚪ uv add requests flask สำหรับเพิ่มแพ็กเกจใหม่เข้าโปรเจกต์
⚪ uv remove flask สำหรับนำแพ็กเกจออกจากโปรเจกต์
⚪ uv lock และ uv sync สำหรับสร้างไฟล์ล็อกเวอร์ชัน และ ปรับสภาพแวดล้อมในระบบให้อัปเดตตรงกันผ่านไฟล์ pyproject.toml และ uv.lock
3) การควบคุมเวอร์ชัน Python (Python Version Management)
นักพัฒนาสามารถควบคุม ตรวจสอบ และ ติดตั้งตัวแปลภาษา Python เวอร์ชันต่างๆ ได้โดยตรง โดยไม่ต้องพึ่งพาโปรแกรม pyenv อีกต่อไป ผ่านคำสั่ง:
⚪ uv python list เพื่อตรวจสอบเวอร์ชัน Python ที่พร้อมใช้งาน
⚪ uv python install 3.12 เพื่อติดตั้งตัวแปรภาษาเวอร์ชันที่ต้องการ
⚪ uv python pin 3.12 เพื่อระบุและล็อกเวอร์ชันของ Python ที่จะใช้งานในโปรเจกต์นั้นๆ (ระบุผ่านไฟล์ .python-version)
4) ระบบรันเครื่องมือชั่วคราว (Tool Runner)
ชุดคำสั่ง uvx ออกแบบมาเพื่อให้ผู้ใช้สามารถเรียกรันเครื่องมือเสริมของ Python ได้ทันทีในรูปแบบชั่วคราวโดยไม่ต้องสั่งติดตั้งถาวรลงเครื่อง เช่น คำสั่ง uvx ruff check . เพื่อสั่งรันเครื่องมือตรวจโค้ด หรือ uvx pycowsay "Hello from uv" ซึ่งทำงานในลักษณะเดียวกับ npx ในระบบนิเวศ JavaScript
5) การรันสคริปต์พร้อมระบุ Dependencies ในตัว (Inline Dependencies)
uv รองรับการเขียนคำอธิบายระบุแพ็กเกจที่จำเป็นต้องใช้ไว้ในรูปแบบข้อความคอมเมนต์ (Comments) ส่วนหัวของไฟล์สคริปต์ Python โดยตรง เช่น การเขียนระบุบล็อก dependencies = ["numpy", "pillow"] ไว้ด้านบนสุด จากนั้นเมื่อสั่งรันสคริปต์ผ่านคำสั่ง uv run script.py ตัวโปรแกรม uv จะทำการดาวน์โหลด และ สร้างสภาพแวดล้อมชั่วคราวเพื่อรันสคริปต์ดังกล่าวให้สำเร็จลุล่วงทันที
6) โหมดการทำงานออฟไลน์ (Offline Mode)
uv ถูกออกแบบให้มีระบบรองรับการทำงานในลักษณะปิด หรือ เครือข่ายออฟไลน์ (Air-gapped Environment) โดยสามารถดึงข้อมูลแพ็กเกจจากแคชส่วนกลางที่เคยบันทึกไว้มาใช้งานต่อได้ทันที เหมาะสำหรับระบบเซิร์ฟเวอร์ภายในองค์กรที่มีการควบคุมความปลอดภัยขั้นสูง
  • ​ประโยชน์ของ uv
✅ ความเร็วระดับผู้นำ
ช่วยเร่งกระบวนการวิเคราะห์ dependencies ให้เร็วขึ้น 24-70 เท่า สร้างสภาพแวดล้อมจำลองเร็วขึ้น 10-100 เท่า และ ติดตั้งเร็วขึ้นเมื่อมีแคชเดิมอยู่แล้ว 10-30 เท่า
✅ เป็นมิตรต่อสิ่งแวดล้อม
ลดการใช้พลังงานของหน่วยประมวลผลลง 30-70 เท่า ซึ่งสอดคล้องกับผลวิจัยที่ระบุว่ายิ่งซอฟต์แวร์ทำงานเร็ว ยิ่งประหยัดพลังงาน
✅ ลดความซับซ้อน
รวมทุกความสามารถในการจัดการแพ็กเกจ ล็อกไฟล์ เวอร์ชัน Python และ เครื่องมือเสริมไว้ภายใต้โปรแกรมเดียว
✅ สภาพแวดล้อมที่แม่นยำ 100%
ใช้ไฟล์ล็อกสากล uv.lock ที่ข้ามการทำงานได้ทุกสถาปัตยกรรมระบบปฏิบัติการ ช่วยให้ทีมพัฒนา และ ระบบเซิร์ฟเวอร์จริงได้เวอร์ชันตรงกันเสมอ
✅ ประหยัดพื้นที่จัดเก็บ
ระบบดึงข้อมูลจากถังแคชกลางผ่านไฟล์ลิงก์ ทำให้โปรเจกต์ใหม่ไม่กินพื้นที่ดิสก์ซ้ำซ้อน
✅ ยกระดับระบบ CI/CD
ย่นระยะเวลาการทำทดสอบ และ ติดตั้งโปรเจกต์บนบริการจำลอง (เช่น GitHub Actions) จากหลักนาทีลงมาเหลือระดับวินาที ช่วยประหยัดค่าใช้จ่ายคลาวด์ลงอย่างมาก
  • ​ควรมีความรู้พื้นฐานอะไรมาก่อนบ้าง?
🧑‍🦱 ความรู้สำหรับผู้เริ่มต้น
⚪ เข้าใจวิธีการใช้งาน Command Line หรือ Terminal พื้นฐาน เช่น คำสั่งเปลี่ยนโฟลเดอร์ (cd) หรือ การเรียกดูไฟล์ (ls/dir)
⚪ เข้าใจบทบาทหน้าที่พื้นฐานของแพ็กเกจ Python ไฟล์บันทึกรายชื่อ requirements.txt และ ประโยชน์ของ virtual environment
⚪ เข้าใจหลักการตั้งเลขเวอร์ชันซอฟต์แวร์แบบ Semantic Versioning (SemVer) และ ตัวดำเนินการล็อกเงื่อนไขเวอร์ชัน (เช่น ^ หรือ ~)
🧑‍💻 ความรู้สำหรับนักพัฒนาซอฟต์แวร์
⚪ เข้าใจโครงสร้างการจัดตั้งโปรเจกต์ Python ผ่านไฟล์ pyproject.toml และ กลไกของระบบ Build backend
⚪ เข้าใจโครงสร้างการทำงาน และ แยกขาดกันของ Virtual environment แต่ละระบบ
⚪ สามารถใช้งานระบบควบคุมเวอร์ชันของซอร์สโค้ดอย่าง Git ร่วมกับไฟล์ล็อกเวอร์ชันต่างๆ ได้
📝 ความรู้สำหรับสายงาน DevOps / SRE
⚪ รู้วิธีเขียน และ ปรับแต่งกระบวนการทำงานแบบอัตโนมัติบนระบบ CI/CD เช่น GitHub Actions หรือ GitLab CI
⚪ มีความรู้การใช้งาน และ เขียนคำสั่งประกอบร่าง Container ผ่าน Docker
⚪ เข้าใจกลไกการตั้งค่า และ จัดเก็บระบบแคชส่วนกลางภายใต้สภาพแวดล้อมการทำงานแบบอัตโนมัติ
  • ​ตัวอย่างการใช้งาน
1) การติดตั้ง uv
บนระบบปฏิบัติการ Windows ให้เปิด PowerShell ด้วยสิทธิ์ผู้ดูแลระบบ (Admin) แล้วรันคำสั่ง
```powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```
สำหรับระบบปฏิบัติการ macOS หรือ Linux ให้เปิด Terminal แล้วรันคำสั่ง:
```bash
```
(กรณีสำรอง สามารถสั่งติดตั้งผ่านระบบ pip เดิมได้โดยใช้คำสั่ง pip install uv)
เมื่อเสร็จสิ้นการติดตั้งให้ทำการเปิดหน้าต่าง Shell ใหม่แล้วรันคำสั่งตรวจสอบเวอร์ชันผ่าน uv --version
2) เริ่มต้นโปรเจกต์ใหม่ด้วย uv
```bash
# สร้างและเข้าสู่โฟลเดอร์โปรเจกต์
mkdir my-python-app
cd my-python-app
# ตั้งค่าเริ่มต้นโครงสร้างโปรเจกต์
uv init
# เพิ่มแพ็กเกจที่ต้องการใช้งานเข้าไปยังโปรเจกต์
uv add requests python-dotenv
# สั่งรันโปรเจกต์ (ระบบจะสร้างโฟลเดอร์ .venv และ ติดตั้งแพ็กเกจให้อัตโนมัติในครั้งแรก)
uv run python main.py
```
3) ย้ายโปรเจกต์เก่าที่มี requirements.txt เข้าสู่ uv
นักพัฒนาสามารถเลือกสั่งติดตั้งแพ็กเกจเข้าโฟลเดอร์จำลองตรงๆ ผ่านคำสั่ง uv pip install -r requirements.txt หรือ จะสั่งเพิ่มรายชื่อเข้าไปยังไฟล์กำหนดโครงสร้างหลักของโปรเจกต์เลยโดยใช้คำสั่ง uv add -r requirements.txt ก็ได้เช่นกัน
4) การใช้งาน uv บนระบบอัตโนมัติ CI/CD (GitHub Actions)
```yaml
name: CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
run: curl -LsSf https://astral.sh/uv/install.sh | sh
- name: Install dependencies
run: uv sync
- name: Run tests
run: uv run pytest
```
5) การทำติดตั้งแพ็กเกจแบบออฟไลน์ (Air-gapped environment)
บนคอมพิวเตอร์เครื่องที่มีอินเทอร์เน็ต ให้สั่งดาวน์โหลดแพ็กเกจเก็บไว้ด้วยคำสั่ง uv pip download -r requirements.txt จากนั้นให้ทำการคัดลอกข้อมูลโฟลเดอร์แคชส่วนกลางปลายทาง (ซึ่งตามปกติจะอยู่ที่ตำแหน่ง ~/.cache/uv) ไปวางลงในเครื่องคอมพิวเตอร์ที่ตัดขาดอินเทอร์เน็ต แล้วรันคำสั่งติดตั้งจากแคชในเครื่องผ่านคำสั่ง:
```bash
uv pip install --no-index --find-links ./packages -r requirements.txt
```
6) การใช้ uv ร่วมกับโปรแกรมเขียนโค้ด PyCharm
เปิดโปรเจกต์ในโปรแกรม PyCharm จากนั้นเข้าไปที่เมนู Settings -> Project -> Python Interpreter แล้วคลิกเลือก Add Interpreter -> Add Local Interpreter จากนั้นในหน้าต่างตัวเลือกให้เลือกโหมด Existing แล้วเลือกชี้เส้นทางไปยังไฟล์แอปพลิเคชัน Python ภายในโฟลเดอร์สภาพแวดล้อมจำลองของโปรเจกต์ ซึ่งจะอยู่ที่พาธ {project_folder}/.venv/Scripts/python.exe สำหรับระบบ Windows หรือที่พาธ {project_folder}/.venv/bin/python สำหรับระบบ macOS และ Linux ตัวโปรแกรมจะตรวจจับและดึงแพ็กเกจมาทำงานร่วมกันทันที
✏️ Shoper Gamer
  • ​pip คืออะไร 👇
  • ​Python คืออะไร 👇
  • ​Rust คืออะไร 👇
Credit :
👇
  • ​https://www.borntodev.com/2026/03/04/uv-101/
  • ​https://docs.astral.sh/uv/
  • ​https://realpython.com/python-uv/
  • ​https://realpython.com/uv-vs-pip/
โฆษณา