2025, Oct 16 21:31
uv में npm --no-save जैसा अस्थायी इंस्टॉल, pyproject बदले बिना
uv में पैकेज को pyproject.toml और uv.lock बदले बिना अस्थायी इंस्टॉल कैसे करें: uv pip install चलाएँ, venv सक्रिय करें, बाद में जरूरत पर uv add से सेव करें.
सिर्फ “देखने‑समझने” के लिए कोई Python पैकेज आज़माते समय आपको उसे प्रोजेक्ट के मेटाडेटा में दर्ज करने की मजबूरी नहीं होनी चाहिए। अगर आप npm की दुनिया से आते हैं, तो शायद uv में npm install --no-save जैसा विकल्प ढूंढ रहे होंगे। uv add में ऐसा फ्लैग नहीं है, लेकिन uv फिर भी pyproject.toml या लॉकफ़ाइल को छुए बिना अस्थायी इंस्टॉल करने का साफ तरीका देता है।
समस्या
आप किसी पैकेज को थोड़े समय के प्रयोग के लिए प्रोजेक्ट में लोकली इंस्टॉल करना चाहते हैं, लेकिन उसे pyproject.toml और लॉकफ़ाइल में सहेजना नहीं चाहते। npm में यह npm install package-name --no-save होता है। uv में आप शायद uv add चलाने और वैसा ही स्विच खोजने की सोचें, मगर uv add में --no-save विकल्प नहीं है।
सहज लगता है, पर आपकी जरूरत का समाधान नहीं—ऐसे तरीके का एक उदाहरण:
uv add trial-lib
यह कमांड निर्भरताओं को दर्ज करने के लिए बनी है, और सेविंग को टालने का कोई स्विच इसमें नहीं है।
असल में क्या होता है
uv add का मकसद आपके प्रोजेक्ट कॉन्फ़िगरेशन और लॉकफ़ाइल में निर्भरताओं का प्रबंधन करना है। बिना सहेजे पैकेज जोड़ने के लिए कोई दस्तावेज़ित फ्लैग नहीं है। अगर आपको ऐसा अस्थायी इंस्टॉल चाहिए जो pyproject.toml या uv.lock को न बदले, तो आपको pip जैसा व्यवहार करने वाला अलग एंट्री‑पॉइंट चाहिए।
समाधान
uv के pip‑संगत इंटरफ़ेस का उपयोग करें—यह प्रोजेक्ट की डिपेंडेंसी फ़ाइलों को अपडेट किए बिना पैकेज को मौजूदा एनवायरनमेंट में इंस्टॉल करता है:
uv pip install temp-dep
“यह एक लो‑लेवल इंटरफ़ेस है, जो संभव हद तक pip के व्यवहार की नकल करता है।”
यदि आप चाहते हैं कि इंस्टॉल खास तौर पर आपके प्रोजेक्ट के uv‑प्रबंधित वर्चुअल एनवायरनमेंट में ही हो, तो इंस्टॉल चलाने से पहले उस एनवायरनमेंट को सक्रिय कर लें। वरना पैकेज आपके शेल में जो भी एनवायरनमेंट सक्रिय होगा, उसी में इंस्टॉल हो जाएगा।
source .venv/bin/activate
uv pip install temp-dep
यह क्रम सक्रिय venv में temp-dep इंस्टॉल करता है और pyproject.toml व uv.lock को ज्यों‑के‑त्यों रहने देता है।
यह क्यों मायने रखता है
अस्थायी इंस्टॉल तब काम आते हैं जब आप किसी टूल या लाइब्रेरी को बिना प्रतिबद्ध हुए बस परखना चाहते हैं। उदाहरण के लिए, आप वर्तमान venv में ruff जैसा कुछ जोड़कर नए विकल्प या नियम आज़मा सकते हैं और बाद में प्रोजेक्ट मेटाडेटा को गंदा किए बिना आगे बढ़ सकते हैं। बाद में यदि तय हो कि पैकेज प्रोजेक्ट का हिस्सा होना चाहिए, तो उसे ठीक से दर्ज करने के लिए uv add पर लौट आएँ। अगर आप किसी ऐसी निर्भरता को जोड़ना भूल जाएँ जिस पर कोड वाकई निर्भर है, तो लॉकफ़ाइल पर निर्भर CI रन गुम पैकेज के कारण फेल होकर इस विसंगति को उजागर कर देगा।
मुख्य बातें
जब आपको uv के साथ बिना सेव किए इंस्टॉल करना हो, तो uv pip install पर भरोसा करें। यह pip जैसी तेज, अस्थायी वर्कफ़्लो देता है और pyproject.toml तथा uv.lock को बिना बदले छोड़ देता है। किसी खास venv को लक्ष्य बनाना हो, तो पहले उसी वर्चुअल एनवायरनमेंट को सक्रिय करें, और निर्भरता दर्ज करने के लिए तैयार होने पर ही uv add का उपयोग करें। अगर आप प्रयोगों को और अलग‑थलग रखना चाहें, तो उन्हें किसी अलग ब्रांच या अस्थायी वर्चुअल एनवायरनमेंट में आज़माकर बाद में हटा सकते हैं।
यह लेख StackOverflow के प्रश्न (लेखक: Rinato Fenice) और STerliakov के उत्तर पर आधारित है।