- uv là trình cài đặt và bộ phân giải gói Python siêu nhanh được viết bằng Rust, được thiết kế để thay thế quy trình làm việc của
pipvàpip-tools - uv là một cột mốc hướng tới "Cargo for Python", một trình quản lý dự án và gói Python toàn diện, nhanh, đáng tin cậy và dễ sử dụng
- Có kế hoạch tiếp quản việc quản lý Rye, công cụ đóng gói Python do Armin Ronacher phát triển mang tính thử nghiệm, và mở rộng uv thành dự án kế nhiệm hợp nhất
Tập trung ám ảnh vào hiệu năng
- uv nhanh hơn 8-10 lần so với
pipvàpip-toolskhi không có bộ nhớ đệm, và nhanh hơn 80-115 lần khi có cache. - Sử dụng bộ nhớ đệm mô-đun toàn cục để không phải tải lại hoặc build lại các phụ thuộc, đồng thời tận dụng Copy-on-Write và hard link trên các hệ thống tệp được hỗ trợ để giảm thiểu dung lượng đĩa sử dụng.
Tối ưu cho việc áp dụng
- Bản phát hành đầu tiên của uv hỗ trợ API của
pipvàpip-tools, nên có thể dùng trong các dự án hiện có mà không cần thay đổi cấu hình. - uv được cung cấp dưới dạng một binary tĩnh duy nhất và có thể thay thế
pip,pip-tools,virtualenv. - Có thể cài đặt tách biệt với chính Python mà không cần quản lý việc cài
piptheo từng phiên bản Python.
"Cargo for Python": uv và Rye
- uv là một cột mốc trung gian hướng tới một trình quản lý gói và dự án Python hợp nhất, nhanh, đáng tin cậy và dễ sử dụng.
- uv hướng tới một binary duy nhất bao gồm không chỉ
pip,pip-tools,virtualenvmà còn cảpipx,tox,poetry,pyenv,ruffvà nhiều công cụ khác.
API tương thích
- Có thể dùng
uv pip installthay chopip installđể cài các phụ thuộc Python từ dòng lệnh, tệp requirements hoặcpyproject.toml. - Có thể dùng
uv pip compilethay chopip-compileđể tạorequirements.txtđã khóa. - Có thể dùng
uv pip syncthay chopip-syncđể đồng bộrequirements.txtđã khóa với môi trường ảo.
Lộ trình
- Sau bản phát hành này, kế hoạch là ưu tiên hỗ trợ người dùng và tập trung cải thiện khả năng tương thích, hiệu năng và độ ổn định.
- Sau đó, mục tiêu là mở rộng uv thành một trình quản lý dự án và gói Python hoàn chỉnh.
Lời cảm ơn
- Gửi lời cảm ơn tới tất cả những người đã đóng góp trực tiếp hoặc gián tiếp cho việc phát triển uv.
- Đặc biệt cảm ơn Jacob Finkelman và Matthieu Pizenberg, những người có PubGrub được sử dụng trong uv như bộ phân giải phiên bản cốt lõi.
Ý kiến của GN⁺
- uv là một công cụ đột phá có thể mang lại hiệu năng vượt trội hơn nhiều so với công cụ
piphiện có cho các nhà phát triển Python, từ đó rút ngắn đáng kể thời gian thiết lập dự án. - Việc được viết bằng Rust phản ánh một xu hướng mới trong hệ sinh thái Python, coi trọng hiệu năng và độ ổn định, và được kỳ vọng sẽ cải thiện mạnh mẽ trải nghiệm của nhà phát triển.
- Sự phát triển của uv hướng tới việc hợp nhất các công cụ quản lý gói và dự án Python, điều này sẽ giúp các nhà phát triển làm việc hiệu quả và nhất quán hơn.
3 bình luận
Tốc độ thực sự cực kỳ ấn tượng;;
Hy vọng nó sẽ được mở rộng để có thể thay thế
conda.Ý kiến Hacker News
Hoài nghi về một
pip-and-moređược VC hậu thuẫnpip-and-moređược vốn đầu tư mạo hiểm hỗ trợ sẽ kiếm lợi nhuận thế nào khi chiếc máy in tiền miễn phí bị hỏng.Câu hỏi về việc uv không hỗ trợ tạo lockfile độc lập nền tảng
Đánh giá tích cực về việc uv hỗ trợ chiến lược giải quyết phụ thuộc thay thế
--resolution=lowest.--python-versionđược đánh giá là rất tuyệt.Thắc mắc về sự phức tạp của hệ thống gói Python
Điểm thú vị khi uv sử dụng pubgrub-rs
Nhắc đến dự đoán về lộ trình của đội ngũ Astral
Trải nghiệm cá nhân về tốc độ của pip
Quan điểm hoài nghi về một trình quản lý gói Python mới
Thắc mắc về quyết định để uv tạo file requirements.txt theo từng nền tảng
requirements.txtđặc thù theo nền tảng thay vì tạo các filepoetry.lockvàpdm.lockkhông phụ thuộc nền tảng.Chúc mừng và phản hồi tích cực về công việc của đội ngũ Astral
Câu hỏi về vấn đề biên dịch của các gói pip