ชุมชนนักพัฒนา Python กำลังหารือกันอย่างกระตือรือร้นเกี่ยวกับรูปแบบการใช้งานที่เหมาะสมสำหรับ UV ซึ่งเป็น package manager ที่พัฒนาด้วย Rust และได้รับความนิยมอย่างมากในฐานะตัวทดแทนเครื่องมือ Python แบบดั้งเดิม แม้ว่า UV จะสัญญาว่าจะทำให้ระบบนิเวศการจัดการแพ็กเกจของ Python ที่ซับซ้อนมาโดยตลอดง่ายขึ้น แต่นักพัฒนากลับพบว่าตัวเองติดอยู่ระหว่างนิสัยเก่าและเวิร์กโฟลว์ใหม่
ชุมชนต่อต้านข้อกล่าวหาการใช้งานที่ผิด
การอภิปรายนี้ก่ออันตรายเมื่อนักพัฒนาบางคนท้าทายข้อสมมุติที่ว่าผู้ใช้ส่วนใหญ่ใช้งาน UV อย่างไม่ถูกต้อง นักวิจารณ์โต้แย้งว่าเอกสารของเครื่องมือนี้ครอบคลุมรูปแบบการใช้งานที่เหมาะสมแล้ว และนักพัฒนา Python ที่มีประสบการณ์ไม่ได้ทำข้อผิดพลาดพื้นฐานที่ถูกเน้นย้ำ การถกเถียงนี้เผยให้เห็นความแตกแยกระหว่างนักพัฒนาที่มอง UV เป็นวิวัฒนาการตามธรรมชาติของเครื่องมือที่มีอยู่ และผู้ที่มองว่าต้องมีการเปลี่ยนแปลงพื้นฐานในการคิดเรื่องเวิร์กโฟลว์
สมาชิกหลายคนในชุมชนแสดงความไม่พอใจต่อแนวทางที่เป็นการสั่งการในการใช้เครื่องมือ โดยแนะนำว่าบริบทการพัฒนาที่แตกต่างกันอาจต้องการกลยุทธ์การใช้งาน UV ที่แตกต่างกัน การต่อต้านนี้เน้นย้ำถึงความตึงเครียดที่ดำเนินอยู่ระหว่างการมาตรฐานและความยืดหยุ่นในแนวทางปฏิบัติการพัฒนา Python
System Python เทียบกับ Managed Python Environments
การอภิปรายทางเทคนิคที่สำคัญเกิดขึ้นเกี่ยวกับการจัดการเวอร์ชัน Python โดยนักพัฒนาที่มีประสบการณ์สนับสนุนการติดตั้ง Python ที่จัดการโดย UV มากกว่าการพึ่งพา system Python ชุมชนเน้นย้ำว่า system Python เป็นของระบบปฏิบัติการและสามารถเปลี่ยนแปลงได้โดยไม่คาดคิดระหว่างการอัปเดต ซึ่งอาจทำให้สภาพแวดล้อมการพัฒนาเสียหายได้
system python ของคุณเป็นของระบบ ไม่ใช่ของคุณ มันเป็น dependency ที่สำคัญของระบบ และคุณไม่ต้องการพึ่งพาว่ามันจะไม่เปลี่ยนเวอร์ชันหลังจากการอัปเดตระบบ
มุมมองนี้สะท้อนถึงความกังวลในวงกว้างเกี่ยวกับความเสถียรและความสามารถในการทำซ้ำของสภาพแวดล้อมการพัฒนาในระบบและสมาชิกทีมที่แตกต่างกัน
โครงสร้างโปรเจกต์ UV ที่สร้างโดย uv init
:
.git
- การเริ่มต้น Git repository.gitignore
- รูปแบบการละเว้นไฟล์เฉพาะ Python.python-version
- การระบุเวอร์ชัน Pythonmain.py
- ไฟล์แอปพลิเคชันโครงร่างpyproject.toml
- การกำหนดค่าโปรเจกต์README.md
- เอกสารประกอบโปรเจกต์
การรวมเครื่องมือเทียบกับโซลูชันเฉพาะทาง
ชุมชนยังคงแบ่งแยกเกี่ยวกับขอบเขตที่ทะเยอทะยานของ UV ในการทดแทนเครื่องมือที่จัดตั้งขึ้นหลายตัวพร้อมกัน รวมถึง pip, pyenv และ venv นักพัฒนาบางคนชื่นชมแนวทางแบบรวม โดยมองว่าเป็นโซลูชันสำหรับระบบนิเวศการจัดการแพ็กเกจของ Python ที่แยกส่วนซึ่งรบกวนผู้เริ่มต้นและนักพัฒนาที่มีประสบการณ์มาอย่างยาวนาน
อย่างไรก็ตาม คนอื่นๆ ชอบการรักษาเครื่องมือแยกและเฉพาะทางสำหรับงานที่แตกต่างกัน พวกเขาโต้แย้งว่า runtime manager อเนกประสงค์อย่าง mise ให้พฤติกรรมที่สม่ำเสมอในภาษาโปรแกรมมิ่งต่างๆ โดยไม่เปลี่ยนแปลงเวิร์กโฟลว์การพัฒนาพื้นฐาน
คำสั่ง UV หลักเปรียบเทียบกับเครื่องมือแบบดั้งเดิม:
uv init
- สร้างโปรเจกต์ใหม่ (แทนที่การตั้งค่าด้วยตนเอง)uv add
- เพิ่ม dependencies (แทนที่pip install
+ การจัดการ requirements ด้วยตนเอง)uv run
- รันในสภาพแวดล้อมของโปรเจกต์ (แทนที่source venv/bin/activate
+python
)uv.lock
- ไฟล์ล็อก dependency (แทนที่requirements.txt
ด้วยเวอร์ชันที่แน่นอน)
ความท้าทายด้านเอกสารและเส้นโค้งการเรียนรู้
แม้จะมีความนิยมที่เพิ่มขึ้นของ UV แต่นักพัฒนารายงานความสับสนที่ยังคงอยู่เกี่ยวกับรูปแบบการใช้งานที่เหมาะสมที่สุด โดยเฉพาะอย่างยิ่งเกี่ยวกับฟีเจอร์ขั้นสูงอย่าง workspaces การอภิปรายของชุมชนเผยให้เห็นว่าแม้เอกสารของ UV จะทำหน้าที่เป็นเอกสารอ้างอิงได้ดี แต่อาจไม่ได้แนะนำนักพัฒนาผ่านการเปลี่ยนผ่านเวิร์กโฟลว์จากเครื่องมือ Python แบบดั้งเดิมอย่างมีประสิทธิภาพ
ช่องว่างนี้ดูเหมือนจะเด่นชัดเป็นพิเศษสำหรับนักพัฒนาที่เปลี่ยนจากเวิร์กโฟลว์ที่ใช้ pip ซึ่งมักจะใช้ UV เป็นตัวทดแทนแบบ drop-in แทนที่จะนำแนวทางที่เน้นโปรเจ็กต์มาใช้ การอภิปรายแนะนำว่าคำแนะนำที่ชัดเจนขึ้นเกี่ยวกับกลยุทธ์การย้ายข้อมูลสามารถช่วยให้นักพัฒนาใช้ประโยชน์จากความสามารถของ UV ได้อย่างเต็มที่
การถกเถียงของชุมชนที่ดำเนินอยู่สะท้อนถึงตำแหน่งของ UV ในช่วงการยอมรับที่สำคัญ ซึ่งความกระตือรือร้นในช่วงแรกเผชิญกับความท้าทายในทางปฏิบัติของการเปลี่ยนแปลงแนวทางปฏิบัติการพัฒนาที่จัดตั้งขึ้นในกรณีการใช้งาน Python ที่หลากหลาย
อ้างอิง: You're probably using uv wrong