Uv - Rust में बना बेहद तेज़ Python पैकेजिंग टूल
(astral.sh)- uv, Rust में लिखा गया एक बेहद तेज़ Python पैकेज installer और resolver है, जिसे
pipऔरpip-toolsworkflow को replace करने के लिए डिज़ाइन किया गया है - uv, "Cargo for Python" की दिशा में एक मील का पत्थर है — एक तेज़, भरोसेमंद और इस्तेमाल में आसान comprehensive Python project और package manager
- Rye, जिसे Armin Ronacher ने experimental रूप से विकसित किया था, उस Python पैकेजिंग टूल के रखरखाव को संभालते हुए uv को एक एकीकृत successor project के रूप में विस्तार देने की योजना है
प्रदर्शन पर जुनूनी फोकस
- uv, caching के बिना
pipऔरpip-toolsकी तुलना में 8-10 गुना तेज़ है, और cache होने पर 80-115 गुना तेज़ है. - यह global module cache का उपयोग करता है ताकि dependencies को दोबारा download या build न करना पड़े, और समर्थित file system पर Copy-on-Write तथा hardlink का उपयोग करके disk space का इस्तेमाल न्यूनतम रखता है.
अपनाने के लिए अनुकूलन
- uv की शुरुआती release,
pipऔरpip-toolsAPI को support करती है, इसलिए मौजूदा project में बिना configuration बदले इसका उपयोग किया जा सकता है. - uv एक single static binary के रूप में उपलब्ध है, और
pip,pip-tools,virtualenvकी जगह ले सकता है. - इसे Python version के हिसाब से
pipinstallation को manage करने की ज़रूरत के बिना, Python से अलग install किया जा सकता है.
"Cargo for Python": uv और Rye
- uv, एक तेज़, भरोसेमंद और इस्तेमाल में आसान एकीकृत Python package और project manager की दिशा में एक मध्यवर्ती मील का पत्थर है.
- uv का लक्ष्य एक ऐसी single binary बनना है जो
pip,pip-tools,virtualenvके साथ-साथpipx,tox,poetry,pyenv,ruffआदि को भी समाहित करे.
संगत API
pip installकी जगहuv pip installका उपयोग करके Python dependencies को command line, requirements file, याpyproject.tomlसे install किया जा सकता है.pip-compileकी जगहuv pip compileका उपयोग करके lockedrequirements.txtबनाया जा सकता है.pip-syncकी जगहuv pip syncका उपयोग करके lockedrequirements.txtऔर virtual environment को sync किया जा सकता है.
रोडमैप
- इस release के बाद, योजना user support को प्राथमिकता देने और compatibility, performance तथा stability सुधारने पर ध्यान केंद्रित करने की है.
- इसके बाद लक्ष्य uv को एक पूर्ण Python project और package manager के रूप में विस्तार देना है.
आभार
- uv के विकास में सीधे या परोक्ष रूप से योगदान देने वाले सभी लोगों के प्रति आभार व्यक्त किया गया है.
- विशेष रूप से, PubGrub को uv के मूल version resolver के रूप में उपयोग करने के लिए Jacob Finkelman और Matthieu Pizenberg का धन्यवाद किया गया है.
GN⁺ की राय
- uv, Python डेवलपर्स को मौजूदा
pipटूल की तुलना में कहीं तेज़ performance देता है, जिससे project setup समय को काफी कम किया जा सकता है. - Rust में लिखा होना Python ecosystem में performance और stability पर ज़ोर देने वाले नए trend को दर्शाता है, और उम्मीद है कि इससे developer experience में बड़ा सुधार होगा.
- uv का विकास Python packaging और project management tools के एकीकरण की दिशा में है, जिससे डेवलपर्स अधिक कुशल और अधिक सुसंगत तरीके से काम कर सकेंगे.
3 टिप्पणियां
वाकई स्पीड कमाल की है;;
उम्मीद है कि यह इतना विस्तार पाए कि conda की जगह ले सके।
Hacker News की राय
VC-backed pip-and-more पर सवाल
uv में platform-independent lockfile generation के न होने पर सवाल
uv के alternative dependency resolution strategy support पर सकारात्मक प्रतिक्रिया
--resolution=lowestविकल्प के ज़रिए सबसे कम compatible version के साथ test करने की सुविधा भी देता है.--python-versionparameter के माध्यम से मौजूदा installed Python version से अलग version के लिए resolution generate कर पाना शानदार है.Python package system की जटिलता पर सवाल
uv द्वारा pubgrub-rs इस्तेमाल करना दिलचस्प
Astral टीम की दिशा को लेकर उल्लेख
pip की speed पर व्यक्तिगत अनुभव
नए Python package manager को लेकर संशय
uv द्वारा platform-specific requirements.txt files बनाने के फ़ैसले पर जिज्ञासा
poetry.lockऔरpdm.lockजैसी files बनाने के बजाय platform-specificrequirements.txtfiles क्यों बनाता है.Astral टीम के काम पर बधाई और सकारात्मक प्रतिक्रिया
pip packages के compile issues पर सवाल