TATECHATLAS
◎ हिन्दी
प्रोग्रामिंग

निर्भरताएँ अलग रखते हुए Python वर्चुअल एनवायरनमेंट बनाएँ

परियोजना के लिए दोहराने योग्य सेटअप बनाएँ और देखें कि pip सही Python इंटरप्रेटर का उपयोग कर रहा है।

इस पृष्ठ पर

हर परियोजना के लिए अलग वर्चुअल एनवायरनमेंट बनाएँ। उसी एनवायरनमेंट के Python इंटरप्रेटर से पैकेज इंस्टॉल करें ताकि निर्भरताएँ दूसरी परियोजना या सिस्टम के Python इंस्टॉलेशन में न मिलें।

पहले सही Python संस्करण चुनें

वर्चुअल एनवायरनमेंट पैकेज अलग रखता है, लेकिन उस Python पर निर्भर रहता है जिससे उसे बनाया गया। पहले परियोजना का अपेक्षित संस्करण देखें। कई संस्करण हों तो सही इंटरप्रेटर स्पष्ट रूप से चुनें; यह न मानें कि python हमेशा वही चुनेगा।

परियोजना की मुख्य डायरेक्टरी में .venv बनाएँ। एप्लिकेशन का कोड उसके बाहर रखें, अंदर नहीं। मशीन या Python बदलने पर एनवायरनमेंट दोबारा बनाना चाहिए। नीचे Linux और macOS का तरीका है; कुछ Linux वितरणों में venv के लिए अतिरिक्त सिस्टम पैकेज चाहिए।

python3 --version
python3 -m venv .venv
source .venv/bin/activate

Windows PowerShell में सक्रिय करना अनिवार्य नहीं

Windows पर py -m venv .venv लॉन्चर का चुना Python इस्तेमाल करता है। किसी स्थापित संस्करण के लिए उसे स्पष्ट करें, जैसे py -3.12 -m venv .venv। फिर नीचे दिए PowerShell कमांड से सक्रिय करें।

यदि स्क्रिप्ट नीति Activate.ps1 रोकती है, तो एनवायरनमेंट का python.exe सीधे चलाएँ। पैकेज लगाने के लिए नीति बदलना आवश्यक नहीं। सक्रिय करना केवल मौजूदा शेल बदलता है; एनवायरनमेंट उसके बिना भी काम करता है।

py -m venv .venv
.\.venv\Scripts\Activate.ps1

# Direct use without activation:
.\.venv\Scripts\python.exe -m pip --version

Python और pip का स्थान जाँचें

प्रॉम्प्ट में .venv दिखना उपयोगी है, लेकिन sys.executable वास्तविक इंटरप्रेटर बताता है। उसका पथ इसी परियोजना के .venv के अंदर होना चाहिए। python -m pip --version pip का स्थान भी दिखाता है। जाँच उसी टर्मिनल में करें जिससे एप्लिकेशन शुरू होता है।

एडिटर में भी यही इंटरप्रेटर चुनें। ModuleNotFoundError का आम कारण है कि एक टर्मिनल पैकेज लगाता है और एडिटर या सर्वर दूसरा Python चलाता है। Notebook में चयनित kernel भी देखें।

python -c "import sys; print(sys.executable)"
python -m pip --version

परियोजना की निर्भरताएँ स्थापित करें

requirements.txt हो तो उसे एनवायरनमेंट के Python से स्थापित करें। नए Django प्रोजेक्ट में python -m pip install Django इस एनवायरनमेंट में Django लगाएगा। मौजूदा प्रोजेक्ट में उसकी dependency फ़ाइल इस्तेमाल करें, ताकि तय संस्करण अनजाने में न बदलें।

संस्करण तय करने से स्थापना दोहराना आसान होता है। फिर भी pip freeze केवल स्थापित distributions बताता है; ऑपरेटिंग सिस्टम या Python संस्करण नहीं। इसमें अस्थायी विकास उपकरण भी आ सकते हैं। इसे परियोजना की अंतिम सूची मानने से पहले पढ़ें।

python -m pip install -r requirements.txt
python -m pip check

दूसरी मशीन पर एनवायरनमेंट फिर बनाएँ

.venv को Git और deployment archive से बाहर रखें। इसमें इंटरप्रेटर के पूर्ण पथ और प्लेटफ़ॉर्म के अनुसार पैकेज हो सकते हैं, इसलिए Windows से Linux पर डायरेक्टरी कॉपी करना भरोसेमंद नहीं। कोड तथा dependency फ़ाइलें भेजें और वहाँ नया एनवायरनमेंट बनाएँ।

सर्वर सेवा या निर्धारित कार्य के लिए इंटरप्रेटर का पूरा पथ दें। कोई टर्मिनल सक्रिय करके खुला रखना जरूरी नहीं। इससे सेवा की startup command देखकर पता चल जाता है कि कौन-सा Python चलता है।

स्थापना के बाद भी समस्या रहे तो

यदि pip नहीं है, तो एनवायरनमेंट के Python से -m ensurepip --upgrade आजमाएँ, यदि वितरण इसका समर्थन करता हो। गलत Python संस्करण से एनवायरनमेंट बना हो तो उसे दोबारा बनाएँ, उसी जगह बदलने की कोशिश न करें।

पैकेज न मिले तो sys.executable, pip का स्थान और एडिटर का इंटरप्रेटर मिलाएँ। कमांड दोहराने से पहले स्थापना का संदेश पढ़ें: build विफल होना या असमर्थित Python संस्करण, गलत एनवायरनमेंट में लगाने से अलग समस्या है। deactivate वर्तमान टर्मिनल की सक्रियता समाप्त करता है।

python -m pip show Django
deactivate

क्या जाँचें

  • परियोजना का सोर्स कोड .venv के बाहर रखें।
  • इच्छित इंटरप्रेटर के साथ python -m pip चलाएँ।
  • एनवायरनमेंट की डायरेक्टरी को संस्करण नियंत्रण से बाहर रखें।

Python इंस्टॉलेशन में venv का समर्थन होना चाहिए। शेल में एनवायरनमेंट सक्रिय करने का तरीका प्लेटफ़ॉर्म के अनुसार बदलता है।

स्रोत

  1. Python: venv ↗
  2. Python Packaging User Guide ↗
  3. pip user guide ↗
  4. Python: sys ↗
  5. Python: ensurepip ↗
ऊपर जाएँ ↑