- ประสิทธิภาพหรือความเข้ากันได้กับ Python ไม่ใช่จุดที่ทำให้ uv แตกต่างออกไป uv ปฏิบัติตาม PEPs และนับว่าเป็นตัวจัดการแพ็กเกจของ Python ที่แนะนำได้ แต่ฟีเจอร์ที่น่าทึ่งที่สุดนั้นมีอีกอย่าง
- เมื่อต้องทำสคริปต์แบบ ad-hoc บน Python 3.12 บางครั้งก็ต้องเพิ่ม dependency อย่าง Pandas วิธีทั่วไปมีดังนี้:
- รัน
pip install pandas เพื่อแก้ไขสภาพแวดล้อมแบบโกลบอล หรือ
- สร้าง virtual environment, รัน
pip install pandas, เปิดใช้งาน virtual environment แล้วค่อยรัน Python
- หากต้องใช้ Python เวอร์ชันอื่น ก็ต้องใช้
pyenv เพื่อติดตั้งเวอร์ชันนั้นและตั้งค่าแบบโลคัล ในกรณีแย่ที่สุด:
pyenv install 3.12
pyenv local 3.12
python -m venv .venv
source .venv/bin/activate
pip install pandas
python
- แต่ถ้าใช้ uv ก็ทำได้ด้วยคำสั่งบรรทัดเดียว:
uv run --python 3.12 --with pandas python
- จำง่าย และไม่ทิ้งร่องรอยไว้ สนุกกับการเขียนสคริปต์!
5 ความคิดเห็น
ผมยังใช้ poetry อยู่เลย แต่คงต้องค่อย ๆ ย้ายไปแล้วล่ะครับ แบบนี้ virtualenv wrapper ก็คงต้องบ๊ายบายเหมือนกัน
ดูเหมือนว่าถึงเวลาปล่อยมือจาก pip จริง ๆ แล้วนะ
ผมใช้งาน
uvได้อย่างพอใจในแทบทุกด้าน ยกเว้นตอนinitที่มักมีของไม่จำเป็นพ่วงติดมาด้วยเยอะแยะฟีเจอร์เด็ดของ Uv คือทำให้การสร้างสภาพแวดล้อมแบบเฉพาะกิจ (ad-hoc) เป็นเรื่องง่าย
Uv - เครื่องมือจัดการแพ็กเกจ Python ความเร็วสูงมากที่พัฒนาด้วย Rust
ความคิดเห็นจาก Hacker News
มีความเห็นว่าชอบตัวจัดการแพ็กเกจ
uvมาก และหวังว่าจะกลายเป็นมาตรฐานของชุมชน โดยเฉพาะเป็นเครื่องมือที่แนะนำให้ผู้ใช้ใหม่ได้uvรองรับ inline script dependencies ของ PEP 723 ทำให้ใช้งานได้อย่างเป็นระเบียบยิ่งขึ้นในฐานะนักพัฒนา NodeJS รู้สึกแปลกใจที่ปัญหาการตั้งค่าสภาพแวดล้อมของ Python ยังไม่ได้รับการแก้ไขเสียที Node เองก็ไม่ได้สมบูรณ์แบบ แต่ไม่ต้องกังวลเรื่องการแก้ไขสภาพแวดล้อมแบบ global
ไม่จำเป็นต้อง activate
virtualenvและยังสามารถสร้าง virtual environment ได้โดยตรงโดยไม่ต้องตั้งค่า interpreter ของpyenvมีความเห็นว่าการรวมหลายฟังก์ชันไว้ในการรันเครื่องมือเดียวของ
uvทำให้ใช้งานไม่สะดวก การ activatevenvแล้วรันโปรแกรมหลายครั้งทำได้สะดวกกว่าuvมีคำสั่งuvxรวมอยู่ด้วย ทำให้สามารถรันสคริปต์ Python ได้โดยไม่ต้องติดตั้งด้วยตนเองuvx --from 'huggingface_hub[cli]' huggingface-cliชอบ
uvและอยากลองใช้ในเร็ว ๆ นี้ แต่มีความเห็นว่ายังไม่เข้าใจประเด็นสำคัญของบทความ เพราะใช้pyenvกับpoetryก็สามารถดึง dependency แบบ local ได้อยู่แล้วหากมี binary dependency อื่น ๆ การใช้
Nixและvirtualenv + pip-toolsอาจเป็นตัวเลือกที่ดีกว่ามีความเห็นว่าควร activate virtual environment ใน "เส้นทางที่ถูกต้อง" ก่อน แล้วค่อยติดตั้ง
pandas