ภาพรวม Tooling ของ Python
Toolchain ที่คุณรู้จักอยู่แล้ว
หัวข้อที่มีชื่อว่า “Toolchain ที่คุณรู้จักอยู่แล้ว”ในฐานะนักพัฒนา TypeScript คุณพึ่งพา tools ชุดที่คาดเดาได้: npm จัดการ packages, eslint จับข้อผิดพลาด, prettier บังคับ formatting, tsc ตรวจสอบ type และ jest รัน tests แต่ละ tool มีหน้าที่เดียว และ compose เข้าหากันได้อย่างลงตัว
Toolchain ของ Python เติบโตมาอย่างเป็นธรรมชาติกว่านั้น ในช่วงหลายปีที่ผ่านมา ทุกความต้องการ — การจัดการ package, virtual environment, formatting, linting, type-checking, testing — ต่างมีหลาย option ที่แข่งกัน ความหลากหลายนั้นคือสิ่งแรกที่ทำให้นักพัฒนาที่มาจาก Node รู้สึกงงงวย
ข่าวดีคือ ecosystem กำลังรวมตัวกันอย่างรวดเร็ว ตารางด้านล่างแมป tool ใน Node/TS แต่ละตัวไปยังคู่เทียบของ Python ทั้งแบบเก่าและแบบใหม่
// Node / TypeScript toolchain// Runtime → node// Package manager → npm / yarn / pnpm// Lockfile → package-lock.json / yarn.lock// Config file → package.json// Linter → eslint// Formatter → prettier// Type checker → tsc (TypeScript compiler)// Test runner → jest / vitest// Build step → tsc / esbuild / tsup// Env isolation → (none — global node_modules)# Python toolchain# Runtime → python3# Package manager → pip (classic) / uv (fast, modern)# Lockfile → requirements.txt / uv.lock# Config file → pyproject.toml (PEP 517/518)# Linter → flake8 (old) / ruff (new, fast)# Formatter → black / ruff format (same tool)# Type checker → mypy / pyright# Test runner → pytest# Build step → (usually none for apps — deploy source)# Env isolation → venv (mandatory — see venv-uv-poetry)ทำไม Virtual Environments จึงขาดไม่ได้
หัวข้อที่มีชื่อว่า “ทำไม Virtual Environments จึงขาดไม่ได้”ใน Node แต่ละ project จะได้รับโฟลเดอร์ node_modules ของตัวเองโดยอัตโนมัติ Python ติดตั้ง packages เข้าไปในไดเรกทอรี site-packages ระดับ global เพียงที่เดียวโดยค่าเริ่มต้น หากไม่มี virtual environment ทุก project บนเครื่องของคุณจะแชร์ package version เดียวกัน — การ upgrade หนึ่งครั้งอาจทำให้อีก project พัง
Virtual environments (venv) แก้ปัญหานี้ด้วยการสร้าง Python + pip แบบ local ที่แยกออกมาต่อ project คุณจะไม่มีวันข้ามขั้นตอนนี้ในงาน Python ระดับมืออาชีพ
รันในเทอร์มินัลของคุณ:
Terminal window python3 -m venv .venv # สร้าง env ที่แยกออกมาsource .venv/bin/activate # เปิดใช้งาน (macOS/Linux)# .venv\Scripts\activate # เปิดใช้งานบน Windowspip install requests # ติดตั้งแค่ใน .venv เท่านั้น
Stack สมัยใหม่: ruff + uv
หัวข้อที่มีชื่อว่า “Stack สมัยใหม่: ruff + uv”ทิศทางของชุมชนในปัจจุบันคือการใช้สอง tools ที่รวมกันครอบคลุมสิ่งที่เคยต้องการถึงห้า tools:
| ความต้องการ | แบบเก่า | แบบใหม่ |
|---|---|---|
| Lint | flake8 + isort | ruff check |
| Format | black | ruff format |
| ติดตั้ง package เร็ว | pip | uv pip install |
| จัดการ project + venv | poetry | uv |
ทั้ง ruff และ uv เขียนด้วย Rust และเร็วกว่าของเดิม 10–100 เท่า ถ้าเริ่มโปรเจกต์ใหม่วันนี้ ให้เลือกสองตัวนี้ไว้ก่อน