"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन पैकेजिंग अब बढ़िया है: `uv` ही आपको चाहिए

पायथन पैकेजिंग अब बढ़िया है: `uv` ही आपको चाहिए

2024-09-01 को प्रकाशित
ब्राउज़ करें:872

Python Packaging is Great Now: `uv` is all you need

इस पोस्ट का शीर्षक ग्लिफ़ की पायथन पैकेजिंग इज़ गुड नाउ का संदर्भ है। मुझे लगता है कि यह कहना सुरक्षित है कि, इन 8 वर्षों में, हम "अच्छे" से "महान" बन गये हैं। मेरे तर्क के लिए पढ़ते रहें।

शुरुआती लोगों के लिए पायथन पैकेजिंग को कठिन क्यों बनाता है?

मेरा तर्क है कि पायथन पैकेजिंग के लिए दो मुख्य कठिनाइयाँ हैं

    बूटस्ट्रैपिंग, यानी शुरुआत कैसे करें!
  • सक्रियण, यानी पायथन में वेनव्स कैसे काम करते हैं (मेरा मास्टोडॉन थ्रेड देखें, इसे समझाना बहुत मुश्किल है!)
बूटस्ट्रैपिंग अक्सर उपेक्षित समस्या थी। क्या हमें लोगों को https://python.org से Python इंस्टॉल करने के लिए कहना चाहिए? एनाकोंडा वितरण? हम लोगों को उनके सिस्टम पैकेज मैनेजर का उपयोग करने और सब कुछ तोड़ने का जोखिम उठाने से कैसे रोकें?

और संपूर्ण आभासी वातावरण जीवनचक्र को न भूलें। यह इतना पागलपन है कि लंबे समय तक पायथन उपयोगकर्ता के रूप में मैं इसके प्रति कितना सुन्न हो गया हूं, लेकिन हर बार जब मुझे इसे समझाना होता है तो मैं अपने छात्रों के चेहरे देखता हूं और मुझे लगता है कि "यह ठीक नहीं है"।

निश्चित रूप से, अन्य समस्याएं भी हैं, जैसे वितरण योग्य पैकेज कैसे बनाएं और प्रकाशित करें। लेकिन मेरा तर्क है कि ये अधिकांश पायथन

शुरुआती को प्रभावित नहीं करते हैं। साथ ही, उन पर भी ध्यान देने की प्रक्रिया चल रही है। पढ़ते रहिये।

यूवी दर्ज करें

15 फरवरी को, एस्ट्रल ने यूवी जारी किया और मैं तुरंत जहाज से कूद गया। अपने काम के हिस्से के रूप में मुझे नियमित रूप से बहुत सारी संभावित परस्पर विरोधी निर्भरताएँ स्थापित करनी पड़ती हैं, और यूवी एक तत्काल राहत थी।

लेकिन दिलचस्प बात यह है कि अब यूवी अपने शुरुआती "तेज पिप" चरण से काफी आगे निकल गया है और यह "एक व्यापक पायथन प्रोजेक्ट और पैकेज मैनेजर जो तेज, विश्वसनीय और उपयोग में आसान है" होने के अपने वादे को पूरा कर रहा है।

बूटस्ट्रैपिंग और सक्रियण समस्याओं पर वापस जाते हैं जिनका मैंने शुरुआत में उल्लेख किया था, यूवी उन्हें कैसे हल करता है? इस पर विचार करें:

    यूवी स्वयं पायथन पर निर्भर नहीं है। पूर्व संकलित, स्टैंडअलोन बायनेरिज़ को Linux, macOS और Windows पर आसानी से इंस्टॉल किया जा सकता है।
  • यूवी पायथन पायथन संस्करणों का प्रबंधन करता है! ओएस-विशिष्ट तंत्रों, जैसे पाइनेव, डेडस्नेक, या कोंडा जैसे हेवीवेट टूल का सहारा लेने की आवश्यकता नहीं है।
  • यूवी टूल केंद्रीकृत वातावरण में टूल का प्रबंधन करता है! पिपक्स या फ़ेड्स की अब कोई आवश्यकता नहीं है।
  • uv init बिल्ड बैकएंड के रूप में हैचलिंग का उपयोग करके एक बेयरबोन pyproject.toml बनाता है और एक खाली README और एक डमी मॉड्यूल के साथ एक कार्यशील स्रोत-लेआउट बनाता है।
    • यदि आपको कुछ अधिक परिष्कृत चाहिए, तो आप हमेशा कुछ अधिक परिष्कृत टेम्पलेट के साथ कॉपियर या कुकीकटर का उपयोग कर सकते हैं।
  • uv ऐड pyproject.toml में निर्भरता जोड़ता है,
  • यदि कोई मौजूद नहीं है तो एक वेनव बनाता है, और उन्हें इंस्टॉल करता है!
  • यूवी लॉक आपकी सभी निर्भरताओं के साथ एक लॉक फ़ाइल बनाता है, जिसे आप यूवी सिंक में उपयोग कर सकते हैं।
    • और यदि आप एक अच्छी पुरानी require.txt चाहते हैं, तो यूवी पिप कंपाइल यह आपके लिए करता है, बिल्कुल पिप-टूल्स की तरह!
  • यूवी रन स्क्रिप्ट और कमांड निष्पादित करता है, फिर से
  • स्पष्ट रूप से सक्रिय वातावरण के बिना!
अनिवार्य रूप से, यह:


$ एमकेडीआईआर यूवी-प्लेग्राउंड $ सीडी यूवी-खेल का मैदान $ uv init चेतावनी: `uv init` प्रयोगात्मक है और बिना किसी चेतावनी के बदल सकता है आरंभिक परियोजना `यूवी-प्लेग्राउंड` $ यूवी ऐड क्लिक करें चेतावनी: `यूवी ऐड` प्रयोगात्मक है और बिना किसी चेतावनी के बदल सकता है यहां Python 3.12.3 दुभाषिया का उपयोग करना: /usr/bin/python3 वर्चुअलएन्व यहां बनाया जा रहा है: .venv 66ms में 3 पैकेज हल किए गए निर्मित यूवी-प्लेग्राउंड @ फ़ाइल:///tmp/uv-प्लेग्राउंड 430ms में 2 पैकेज तैयार किए 0.62ms में 2 पैकेज स्थापित किए गए क्लिक करें==8.1.7 uv-playground==0.1.0 (फ़ाइल से: ///tmp/uv-playground) $ पेड़ . ├── pyproject.toml ├── README.md ├── स्रोत │· └── uv_playground │· ├── __init__.py └── uv.lock 3 निर्देशिकाएँ, 4 फ़ाइलें $ यूवी रन पायथन -सी "यूवी_प्लेग्राउंड से आयात हैलो; प्रिंट (हैलो ())" चेतावनी: `यूवी रन` प्रयोगात्मक है और बिना किसी चेतावनी के बदल सकता है यूवी-प्लेग्राउंड की ओर से नमस्कार!
$ mkdir uv-playground
$ cd uv-playground
$ uv init
warning: `uv init` is experimental and may change without warning
Initialized project `uv-playground`
$ uv add click
warning: `uv add` is experimental and may change without warning
Using Python 3.12.3 interpreter at: /usr/bin/python3
Creating virtualenv at: .venv
Resolved 3 packages in 66ms
   Built uv-playground @ file:///tmp/uv-playground
Prepared 2 packages in 430ms
Installed 2 packages in 0.62ms
   click==8.1.7
   uv-playground==0.1.0 (from file:///tmp/uv-playground)
$ tree
.
├── pyproject.toml
├── README.md
├── src
│   └── uv_playground
│       ├── __init__.py
└── uv.lock

3 directories, 4 files
$ uv run python -c "from uv_playground import hello; print(hello())"
warning: `uv run` is experimental and may change without warning
Hello from uv-playground!
इसलिए, इस सवाल पर कि "मैं अपने कंप्यूटर पर पायथन सीखना कैसे शुरू करूं", अब आप सार्वभौमिक रूप से जवाब दे सकते हैं: "यूवी इंस्टॉल करें"।

कुछ प्रतिबिम्ब

आभासी वातावरण के विषय पर, मैं अनिवार्य रूप से आर्मिन से सहमत हूं जब वह कहते हैं

एनपीएम "सक्रियण" के किसी भी समकक्ष के बिना दूर हो गया और मुझे लगता है कि भविष्य के पायथन पारिस्थितिकी तंत्र को भी अब वर्चुअलएन्व सक्रियण में अधिक उपयोग नहीं मिलेगा।

मैंने यह भी देखा कि यूवी इनिट ने हैचलिंग को चुना। पीडीएम के प्रति मेरी हमेशा थोड़ी सी प्राथमिकता रही है, लेकिन मुझे लगता है कि यह बिना वापसी का बिंदु हो सकता है।

PyOpenSci पैकेजिंग गाइड के लिए इस निर्णय आरेख को तैयार करने में लिआ और योगदानकर्ताओं को बहुत काम करना पड़ा। लेकिन तथ्य यह है कि अब एक

बेसलाइन है जिसे लोग अधिक विशिष्ट आवश्यकताएं होने पर बदल सकते हैं (उदाहरण के लिए, एक मेसन या स्किकिट-बिल्ड सक्षम बिल्ड बैकएंड) फिर से एक बेहतर डेवलपर अनुभव प्रदान करता है।

कोंडा पर

कोंडा बनाम पिप का विषय भ्रम का एक और आम स्रोत है। मैं पहले दिन से ही कोंडा का उपयोगकर्ता और प्रशंसक था, और इसने पाइथॉन को ऐसे समय में बहुत स्पष्ट मौत से प्रभावी ढंग से बचाया जब विंडोज़ पर सामान स्थापित करना बहुत मुश्किल था।

इसके बाद के वर्षों में, मैं अक्सर अंतर बताने वाले जेक वेंडरप्लास के पुराने ब्लॉग पोस्ट का उल्लेख करता था, लेकिन अब तक यह एक खोया हुआ कारण लगता है।

पिप और कोंडा के बीच अंतरसंचालनीयता समस्याओं को कभी भी पूरी तरह से संबोधित नहीं किया गया था, और जबकि मुझे लगता है कि पिक्सी के लोग शानदार काम कर रहे हैं, मुझे लगता है कि लंबे समय में यूवी जीत जाएगी।

मैं पूरी तरह से स्वीकार करता हूं कि कोंडा पैकेज गैर-पायथन कोड की धारणा के आसपास बेहतर रूप से संरचित हैं, और "पीईपीआई पर वसा पहियों" की वर्तमान दुनिया स्पष्ट रूप से एक उप-इष्टतम समाधान है। लेकिन पूरा पारिस्थितिकी तंत्र उस दिशा में आगे बढ़ गया है: अधिकांश पैकेज अब विभिन्न प्रकार के प्लेटफार्मों के लिए पूर्व-संकलित पहिये प्रकाशित करते हैं।

दूसरे शब्दों में: कोंडा 2024 में उतना उपयोगी नहीं हो सकता जितना 2014 में था, और अब इसे शुरुआती लोगों को पढ़ाना बंद करने और इसे एक उन्नत उपकरण मानने का समय आ गया है।

निष्कर्ष

यह थोड़ा जल्दी होने का कारण यह है कि इनमें से कुछ यूवी कमांड अभी भी प्रायोगिक हैं और भविष्य में विकसित हो सकते हैं। लेकिन पहली बार, मुझे स्पष्ट रूप से एक वर्कफ़्लो टूल दिखाई दे रहा है जो मानकों के अनुरूप है, व्यापक है, बूटस्ट्रैपिंग समस्याओं से मुक्त है, सावधानीपूर्वक डिज़ाइन किया गया है, और जो

जीत सकता है

यह वही है जो कई पायथन पैकेजिंग आलोचक हमेशा से चाहते थे, है ना? कई अलग-अलग उपकरणों में से चयन करने की आवश्यकता नहीं है। लेकिन मुझे लगता है कि यूवी इससे कहीं आगे निकल गया और अन्य डेवलपर अनुभव मुद्दों को हल कर लिया, जिसके लिए मैं खुश और आभारी हूं।

मैं हर चीज के लिए प्रभावी ढंग से यूवी का उपयोग कर रहा हूं और मैं पीछे मुड़कर नहीं देख रहा हूं। मैं सभी को इस टूल की अनुशंसा करना जारी रखूंगा, इसके बारे में बात करना जारी रखूंगा और आशा करता हूं कि यह और अधिक व्यापक हो जाए।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/astrojuanlu/python-packages-is-great-now-uv-is-all-you-need-4i2d?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 से संपर्क करें इसे हटाने के लिए .com
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3