Development

เริ่มต้นใช้งาน uv ตัวจัดการ Python แห่งยุค 2026

แนะนำวิธีติดตั้งและใช้งาน uv เครื่องมือจัดการ Python ที่เร็วสุด ๆ ตั้งแต่ติดตั้ง รันเครื่องมือ ไปจนถึงจัดการ Project

uv คืออะไร

uv เป็นเครื่องมือจัดการ Python แบบครบวงจรที่เขียนด้วย Rust ทำงานได้เร็วกว่า pip ถึง 10-100 เท่า สามารถใช้แทน pip, pip-tools, pipx, poetry, pyenv ได้ในตัวเดียว พัฒนาโดยทีม Astral ทีมเดียวกับที่ทำ Ruff (Python linter)

1. วิธีติดตั้ง uv บน macOS

ติดตั้งผ่าน Homebrew (แนะนำ)

brew install uv

ติดตั้งผ่าน Standalone Installer

curl -LsSf https://astral.sh/uv/install.sh | sh

ตรวจสอบว่าติดตั้งสำเร็จด้วย

uv version

อัปเดตเวอร์ชัน

# ถ้าติดตั้งผ่าน Homebrew
brew upgrade uv

# ถ้าติดตั้งผ่าน Standalone Installer
uv self update

2. รันเครื่องมือแบบง่าย ๆ ด้วย uvx

uvx คือคำสั่งสำหรับรันเครื่องมือ Python แบบไม่ต้องติดตั้งถาวร มันจะสร้าง virtual environment ชั่วคราวให้อัตโนมัติ ใช้เสร็จก็ทิ้งไป เหมาะมากสำหรับเครื่องมือที่ใช้เป็นครั้งคราว

รัน tool แบบครั้งเดียว

# รัน ruff (Python linter) โดยไม่ต้องติดตั้ง
uvx ruff check .

# รัน black (code formatter)
uvx black my_script.py

# รัน httpie
uvx httpie https://api.github.com

ติดตั้ง tool แบบถาวร

ถ้าเป็นเครื่องมือที่ใช้บ่อย ๆ สามารถติดตั้งถาวรได้ด้วย uv tool install

# ติดตั้ง ruff แบบถาวร
uv tool install ruff

# ติดตั้ง youtube-dl
uv tool install yt-dlp

# ติดตั้งจาก git repository
uv tool install git+https://github.com/maurosoria/dirsearch

รัน tool แบบระบุเวอร์ชัน

สามารถระบุเวอร์ชันของ tool ที่ต้องการรันได้เลย เหมาะสำหรับกรณีที่ต้องการใช้เวอร์ชันเฉพาะ หรือต้องการทดสอบกับหลาย ๆ เวอร์ชัน

# รัน ruff เวอร์ชันที่ต้องการ
uvx [email protected] check .

# รัน ruff เวอร์ชันล่าสุด
uvx ruff@latest check .

# รัน black เวอร์ชันเฉพาะ
uvx [email protected] my_script.py

ติดตั้งถาวรแบบระบุเวอร์ชันก็ทำได้เช่นกัน

uv tool install 'ruff==0.11.0'
uv tool install 'black>=24.0,<25.0'

ดูรายการเครื่องมือที่ติดตั้งไว้

uv tool list

3. ใช้งานกับ Python Project

สร้าง Project ใหม่

uv init my-project
cd my-project

uv จะสร้างไฟล์ให้อัตโนมัติ

my-project/
├── .python-version
├── README.md
├── main.py
└── pyproject.toml

เพิ่ม/ลบ Dependencies

# เพิ่ม package
uv add requests
uv add flask sqlalchemy

# เพิ่มแบบระบุเวอร์ชัน
uv add 'requests==2.32.0'

# เพิ่มจาก git
uv add git+https://github.com/psf/requests

# เพิ่มจาก requirements.txt ที่มีอยู่แล้ว
uv add -r requirements.txt

# ลบ package
uv remove requests

รัน Project

# รันไฟล์ Python ใน project
uv run main.py

# รัน framework command เช่น Flask
uv add flask
uv run -- flask run -p 3000

uv run จะจัดการ sync dependencies และสร้าง virtual environment ให้อัตโนมัติ ไม่ต้อง pip install หรือ source .venv/bin/activate เอง

จัดการเวอร์ชัน Python

# ดูเวอร์ชัน Python ที่มีให้ติดตั้ง
uv python list

# ติดตั้ง Python เวอร์ชันที่ต้องการ
uv python install 3.12

# ตรึงเวอร์ชัน Python ของ project
uv python pin 3.12

4. อื่น ๆ ที่น่าสนใจ

รัน Script พร้อม Dependencies แบบ Inline

สามารถประกาศ dependencies ไว้ในไฟล์ Python ได้เลย โดยใช้ inline metadata ตาม PEP 723

fetch_peps.py
# /// script
# dependencies = [
#   "httpx",
# ]
# ///

import httpx

resp = httpx.get("https://peps.python.org/api/peps.json")
data = resp.json()
print([(k, v["title"]) for k, v in data.items()][:10])
uv run fetch_peps.py

uv จะอ่าน dependencies จาก comment ในไฟล์แล้วติดตั้งให้อัตโนมัติ เหมาะมากสำหรับ script เล็ก ๆ ที่ไม่อยากสร้าง project เต็มรูปแบบ

รัน Script พร้อมระบุ Dependencies ผ่าน CLI

# รัน script พร้อมติดตั้ง rich ให้อัตโนมัติ
uv run --with rich example.py

# ระบุเวอร์ชันได้
uv run --with 'rich>12,<13' example.py

ใช้ uv ใน Docker

FROM python:3.12-slim

# ติดตั้ง uv
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

# ติดตั้ง dependencies
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev

# คัดลอก source code
COPY . .

CMD ["uv", "run", "main.py"]

ใช้ uv แทน pip ได้เลย

สำหรับคนที่ยังชินกับ pip สามารถใช้ uv pip แทนได้เลย แค่เติม uv ข้างหน้า

uv pip install requests
uv pip install -r requirements.txt
uv pip freeze
uv pip uninstall requests

สรุป

uv เป็นเครื่องมือที่ช่วยให้การจัดการ Python ง่ายขึ้นมาก ตั้งแต่การติดตั้ง Python เอง การจัดการ dependencies ไปจนถึงการรันเครื่องมือต่าง ๆ ทั้งหมดนี้ทำได้ด้วยคำสั่งเดียว และที่สำคัญคือเร็วมาก ๆ ลองใช้ดูครับ

Ref

Related Articles

Simple Paginate
Development

Simple Paginate

Code ตัวอย่างคือการใช้งานใน Express + Typescript + Mongoose
ตั้งค่าให้สามารถเชื่อมต่อ Local Network ได้ ตอนที่เชื่อม openvpn
Development

ตั้งค่าให้สามารถเชื่อมต่อ Local Network ได้ ตอนที่เชื่อม openvpn

แก้ไขไฟล์ openvpn config หากมีการ import เข้าไปใน openvpn gui แล้วสามารถค้นหาไฟล์การตั้งค่าได้ที่
วิธีการลบ .env file ออกจาก git แบบถูกวิธี
Development

วิธีการลบ .env file ออกจาก git แบบถูกวิธี

สมมติว่าเราเผลอ commit ไฟล์ .env ที่มี API key ไปแล้ว และ push ขึ้น GitHub เราต้องรีบลบมันออกทันที เพราะข้อมูลอาจถูกนำไปใช้ได้