Cải tiến quy trình phát triển Python với UV
(youtube.com)Tóm tắt video "uv: Making Python Local Workflows FAST and BORING in 2025"
Video này là phần thứ hai về cách sử dụng công cụ đóng gói Python uv để làm cho quy trình phát triển cục bộ nhanh hơn và hiệu quả hơn. Các ý chính như sau.
1. Tận dụng các lệnh cốt lõi của uv
uv run: Chạy các lệnh nhưpytesthoặcfastapitrong môi trường ảo bằng các dependency được định nghĩa trongpyproject.tomlvà khóa trong tệpuv.lock.uv add: Thêm dependency mới vàopyproject.tomlvà tự động cập nhật tệpuv.lock.uv run --with: Cho phép tạm thời đưa vào các module hỗ trợ phát triển nhưpdbppmà không cần thêm vào dependency cốt lõi của dự án.uv lock --upgrade: Cập nhật tệp khóa dependency với tốc độ rất nhanh.uv runsẽ tự động phát hiện tệp khóa đã thay đổi khi chạy và đồng bộ môi trường.
2. Chuẩn hóa workflow bằng just
uvkhông có sẵn tính năng định nghĩa lệnh tùy chỉnh nhưhatchhaypdm.- Video chỉ ra các nhược điểm của
Makefilenhư phụ thuộc nền tảng, cú pháp không tiêu chuẩn, v.v., và mạnh mẽ đề xuấtjust— công cụ chạy lệnh được viết bằng Rust — như một giải pháp thay thế. - Dùng
justfileđể chuẩn hóa các tác vụ lặp lại thành các recipe như sau.test: Chạy kiểm thử (có thể truyền tham số)cov: Kiểm tra độ bao phủ kiểm thửserve: Chạy máy chủ phát triểncheckall: Chạy toàn bộ các bước kiểm tra như lint, type check, v.v. cùng một lúc
3. Tích hợp just với uv
- Tệp
.env:justcó thể đọc tệp.envđể thiết lập biến môi trường. Nhờ đó có thể xây dựng workflow linh hoạt, chẳng hạn thêm động tham số--withchouv runhoặc thay đổi cổng máy chủ. uvx(uv tool run): Đây là lệnh chạy các gói PyPI độc lập với dự án, tương tựpipx. Bên trong recipe củajust, có thể dùng các công cụ nhưhttpiemà không cần thêm chúng vào dependency của dự án.
4. Quản lý trực tiếp môi trường ảo (workflow tùy chọn)
- Đây là cách dành cho các nhà phát triển muốn dùng phương pháp truyền thống, tức kích hoạt môi trường ảo (
.venv) trực tiếp thay vì thông quauv run. uv sync: Đồng bộ trạng thái giữa tệpuv.lockvà thư mục.venv. (cài dependency và loại bỏ các gói không cần thiết)direnv: Công cụ shell tự động chạy script.envrckhi đi vào một thư mục cụ thể. Có thể tận dụng điều này để tự động chạyuv syncvà kích hoạt môi trường ảo khi vào thư mục.
Kết luận
Khi kết hợp tốc độ của uv với các công cụ như just và direnv, bạn có thể tự động hóa và chuẩn hóa việc quản lý dependency cũng như thực thi lệnh, từ đó xây dựng một môi trường phát triển "nhanh và nhàm chán (boring)" — tức cực kỳ ổn định và dễ dự đoán — giúp nhà phát triển tập trung hơn vào logic cốt lõi.
4 bình luận
Tôi đã tạo sẵn một template để dùng với https://github.com/gracefullight/py-starter.
Nếu dùng poethepoet thì có thể định nghĩa và sử dụng các tác vụ ngay trong
pyproject.toml, nên tôi dùng nó thay chojust.Cảm ơn.
Cảm ơn. https://poethepoet.natn.io/