- uv คือเครื่องมือ installer และ resolver สำหรับแพ็กเกจ Python ความเร็วสูงพิเศษที่เขียนด้วย Rust ออกแบบมาเพื่อแทนที่เวิร์กโฟลว์ของ
pipและpip-tools - uv เป็นหมุดหมายสู่แนวคิด "Cargo for Python" โดยมุ่งเป็นตัวจัดการโปรเจ็กต์และแพ็กเกจ Python แบบครบวงจรที่รวดเร็ว เชื่อถือได้ และใช้งานง่าย
- มีแผนรับช่วงการดูแล Rye ซึ่งเป็นเครื่องมือแพ็กเกจจิง Python ที่ Armin Ronacher พัฒนาเชิงทดลอง และขยาย uv ให้เป็นโครงการสืบทอดแบบรวมศูนย์
การโฟกัสด้านประสิทธิภาพแบบสุดโต่ง
- uv เร็วกว่า
pipและpip-tools8-10 เท่า เมื่อไม่มีแคช และเร็วกว่า 80-115 เท่า เมื่อมีแคช - ใช้แคชโมดูลแบบโกลบอลเพื่อหลีกเลี่ยงการดาวน์โหลดหรือบิลด์ dependencies ซ้ำ และใช้ Copy-on-Write กับฮาร์ดลิงก์บนไฟล์ซิสเต็มที่รองรับเพื่อลดการใช้พื้นที่ดิสก์ให้น้อยที่สุด
ปรับให้รับไปใช้งานได้ง่าย
- รีลีสแรกของ uv รองรับ API ของ
pipและpip-toolsจึงสามารถใช้กับโปรเจ็กต์เดิมได้โดยไม่ต้องเปลี่ยนคอนฟิก - uv มาในรูปแบบไบนารีสแตติกไฟล์เดียว และสามารถใช้แทน
pip,pip-tools,virtualenvได้ - สามารถติดตั้งแยกจากตัว Python ได้โดยไม่ต้องคอยจัดการการติดตั้ง
pipตามแต่ละเวอร์ชันของ Python
"Cargo for Python": uv และ Rye
- uv เป็นหมุดหมายระหว่างทางสู่ตัวจัดการแพ็กเกจและโปรเจ็กต์ Python แบบรวมศูนย์ที่รวดเร็ว เชื่อถือได้ และใช้งานง่าย
- uv ตั้งเป้าเป็นไบนารีเดียวที่ครอบคลุมไม่เพียง
pip,pip-tools,virtualenvแต่ยังรวมถึงpipx,tox,poetry,pyenv,ruffและอื่น ๆ
API ที่เข้ากันได้
- ใช้
uv pip installแทนpip installเพื่อติดตั้ง dependencies ของ Python จากบรรทัดคำสั่ง ไฟล์ requirements หรือpyproject.toml - ใช้
uv pip compileแทนpip-compileเพื่อสร้างrequirements.txtที่ล็อกเวอร์ชันไว้ - ใช้
uv pip syncแทนpip-syncเพื่อซิงก์requirements.txtที่ล็อกไว้กับ virtual environment
โรดแมป
- หลังจากรีลีสนี้ มีแผนให้ความสำคัญกับการซัพพอร์ตผู้ใช้เป็นอันดับแรก พร้อมโฟกัสที่การปรับปรุงความเข้ากันได้ ประสิทธิภาพ และเสถียรภาพ
- หลังจากนั้นจะมุ่งขยาย uv ให้เป็นตัวจัดการโปรเจ็กต์และแพ็กเกจ Python แบบสมบูรณ์
คำขอบคุณ
- ขอขอบคุณทุกคนที่มีส่วนร่วมต่อการพัฒนา uv ไม่ว่าทางตรงหรือทางอ้อม
- โดยเฉพาะอย่างยิ่ง ขอขอบคุณ Jacob Finkelman และ Matthieu Pizenberg ซึ่ง PubGrub ของทั้งสองถูกใช้ใน uv ในฐานะตัวแก้เวอร์ชันพื้นฐาน
ความเห็นของ GN⁺
- uv เป็นเครื่องมือที่โดดเด่นซึ่งมอบประสิทธิภาพที่เร็วกว่าชุดเครื่องมือ
pipเดิมอย่างมากสำหรับนักพัฒนา Python และช่วยลดเวลาในการตั้งค่าโปรเจ็กต์ได้อย่างชัดเจน - การที่พัฒนาด้วย Rust สะท้อนเทรนด์ใหม่ในระบบนิเวศ Python ที่ให้ความสำคัญกับทั้งประสิทธิภาพและความเสถียร ซึ่งคาดว่าจะยกระดับประสบการณ์ของนักพัฒนาได้มาก
- การพัฒนา uv มุ่งสู่การรวมศูนย์เครื่องมือด้านแพ็กเกจจิงและการจัดการโปรเจ็กต์ของ Python ซึ่งจะช่วยให้นักพัฒนาทำงานได้อย่างมีประสิทธิภาพและสม่ำเสมอยิ่งขึ้น
3 ความคิดเห็น
เร็วมากจริง ๆ เลยนะ;;
หวังว่ามันจะขยายต่อไปจนสามารถมาแทนที่ conda ได้
ความคิดเห็นจาก Hacker News
ข้อสงสัยเกี่ยวกับ pip-and-more ที่ได้รับเงินหนุนจาก VC
คำถามเกี่ยวกับการที่ uv ไม่รองรับการสร้าง lockfile แบบไม่ขึ้นกับแพลตฟอร์ม
การประเมินเชิงบวกต่อการรองรับกลยุทธ์การแก้ dependency ทางเลือกของ uv
--resolution=lowest--python-versionข้อสงสัยต่อความซับซ้อนของระบบแพ็กเกจ Python
ประเด็นที่น่าสนใจเกี่ยวกับการที่ uv ใช้ pubgrub-rs
การกล่าวถึงการคาดการณ์เส้นทางของทีม Astral
ประสบการณ์ส่วนตัวเกี่ยวกับความเร็วของ pip
มุมมองเชิงสงสัยต่อ Python package manager ตัวใหม่
ความสงสัยต่อการตัดสินใจของ uv ที่สร้างไฟล์ requirements.txt เฉพาะแพลตฟอร์ม
คำยินดีและปฏิกิริยาเชิงบวกต่อผลงานของทีม Astral
คำถามเกี่ยวกับปัญหาการคอมไพล์ของแพ็กเกจ pip