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

स्थानांतरित एनवायरनमेंट क्यों खराब हो जाता है

एक वर्चुअल एनवायरनमेंट अपने पायथन कॉन्फ़िगरेशन को संग्रहीत करता है और एनवायरनमेंट के इंटरप्रेटर के पाथ के साथ इंस्टॉल किए गए स्क्रिप्ट बनाता है। जब आप प्रोजेक्ट फ़ोल्डर को स्थानांतरित करते हैं, तो वे पाथ अभी भी पुराने स्थान की ओर इशारा कर सकते हैं। इसके कारण source .venv/bin/activate किसी अनुपलब्ध फ़ाइल को संदर्भित कर सकता है, या एनवायरनमेंट में इंस्टॉल किया गया कोई कमांड ऐसे इंटरप्रेटर को कॉल कर सकता है जो अब मौजूद ही नहीं है। एक्टिवेशन को फिर से चलाना या एनवायरनमेंट का नाम बदलना इन एम्बेडेड पाथ को पूरी तरह ठीक नहीं करता है; पायथन का प्रलेखित उपाय एनवायरनमेंट को उसके नए स्थान पर फिर से बनाना है। Python: venv and how environments work

1. स्थानांतरित प्रोजेक्ट को Terminal में खोलें

Terminal में, प्रोजेक्ट की वर्तमान डायरेक्टरी में जाएं। zsh या bash में, यदि पाथ में रिक्त स्थान (स्पेस) या शेल वर्ण हैं, तो पाथ को कोट्स में रखें; उदाहरण पाथ को वास्तविक फ़ोल्डर स्थान से बदलें:

cd "$HOME/Projects/My Python Project"
pwd
ls -la

जांचें कि आप प्रोजेक्ट रूट में हैं और इसकी सोर्स फ़ाइलें तथा डिपेंडेंसी जानकारी देख सकते हैं। सामान्य डिपेंडेंसी रिकॉर्ड में requirements.txt, pyproject.toml, और एक प्रोजेक्ट-विशिष्ट लॉक फ़ाइल शामिल होती हैं। पूरे प्रोजेक्ट या उसकी डिपेंडेंसी फ़ाइलों को न हटाएं। यदि आप अनिश्चित हैं कि कौन सी डायरेक्टरी पुराना एनवायरनमेंट है, तो कुछ भी हटाने से पहले उसकी सामग्री की जांच करें।

2. केवल पुराने एनवायरनमेंट को हटाएं

यदि एनवायरनमेंट डायरेक्टरी का नाम .venv है और यह प्रोजेक्ट रूट के अंदर है, तो केवल उसी डायरेक्टरी को हटाएं। यदि शेल प्रॉम्प्ट दिखाता है कि यह सक्रिय है, तो पहले इसे निष्क्रिय करें; deactivate प्रलेखित शेल कमांड है। फिर चलाएं:

deactivate
rm -rf .venv

यदि कोई एनवायरनमेंट सक्रिय नहीं है, तो deactivate रिपोर्ट कर सकता है कि कमांड उपलब्ध नहीं है; इसके बिना आगे बढ़ें। rm -rf .venv चलाने से पहले, सत्यापित करें कि pwd प्रोजेक्ट रूट दिखाता है और .venv वही एनवायरनमेंट है जिसे आप बदलना चाहते हैं। यदि आपका एनवायरनमेंट किसी अन्य नाम का उपयोग करता है या कहीं और स्थित है, तो उसका सटीक पाथ दर्ज करें और प्रोजेक्ट के सोर्स या डेटा को हटाने से बचें। पायथन पुराने एनवायरनमेंट को उसके नए स्थान पर फिर से बनाने के बाद हटाने की सलाह देता है; यह लेख लक्षित टारगेट को स्पष्ट बनाने के लिए इसे पहले हटाता है। Python: venv and how environments work

3. अभीष्ट पायथन के साथ एनवायरनमेंट को फिर से बनाएं

यदि प्रोजेक्ट किसी पायथन संस्करण को निर्दिष्ट करता है, तो अपने Mac पर उपलब्ध मैचिंग इंटरप्रेटर का उपयोग करें। उदाहरण के लिए, जब python3.12 इंस्टॉल हो और प्रोजेक्ट को उस संस्करण की आवश्यकता हो:

python3.12 -m venv .venv
source .venv/bin/activate
python --version
python -m pip --version

यदि प्रोजेक्ट कोई संस्करण निर्दिष्ट नहीं करता है और आपका सामान्य python3 उपयुक्त है, तो इसके बजाय python3 -m venv .venv का उपयोग करें। macOS पर, zsh और bash के लिए मानक एक्टिवेशन कमांड source .venv/bin/activate है। पैकेज रीस्टोर करने से पहले python --version के आउटपुट को सत्यापित करें; सक्रिय होने के बाद python को एनवायरनमेंट के इंटरप्रेटर को संदर्भित करना चाहिए। Python: venv activation and interpreter paths

Homebrew उपयोगकर्ताओं को प्रोजेक्ट पैकेज वर्चुअल एनवायरनमेंट के अंदर रखने चाहिए। Homebrew अपने वर्तमान पायथन को बाह्य रूप से प्रबंधित (externally managed) के रूप में प्रलेखित करता है और डिपेंडेंसी के लिए प्रोजेक्ट एनवायरनमेंट की सिफारिश करता है। यदि python3 गायब है या अनुपयुक्त इंटरप्रेटर का चयन करता है, तो उस इंस्टॉलर या संस्करण प्रबंधक से परामर्श करें जिसने प्रोजेक्ट का पायथन प्रदान किया था; macOS-प्रबंधित पायथन डायरेक्टरीज़ में पैकेज इंस्टॉल करके एनवायरनमेंट को ठीक करने का प्रयास न करें। Homebrew: Language Runtimes and Packages

4. प्रोजेक्ट से डिपेंडेंसी को दोबारा इंस्टॉल करें

उपलब्ध होने पर प्रोजेक्ट के मौजूदा डिपेंडेंसी निर्देशों या लॉक फ़ाइल का उपयोग करें। ऐसे प्रोजेक्ट के लिए जो requirements.txt में डिपेंडेंसी को ट्रैक करता है, उन्हें एनवायरनमेंट के पायथन और pip के साथ फिर से इंस्टॉल करें:

python -m pip install -r requirements.txt

python -m pip का उपयोग करने से pip, python द्वारा चुने गए इंटरप्रेटर से जुड़ जाता है। यदि प्रोजेक्ट किसी अन्य डिपेंडेंसी मैनेजर या लॉक फ़ाइल का उपयोग करता है, तो मनगढ़ंत रिक्वायरमेंट्स फ़ाइल बनाने या लॉक को अनदेखा करने के बजाय उस टूल की प्रलेखित इंस्टॉलेशन प्रक्रिया का पालन करें। एक नए venv में डिफ़ॉल्ट रूप से pip शामिल होता है, और पायथन का दस्तावेज़ विशेष रूप से इंस्टॉल किए गए पैकेजों को फिर से बनाने के तरीके के रूप में एक रिक्वायरमेंट्स फ़ाइल प्रदान करता है। Python: venv, Python: Installing Python modules

यदि इंस्टॉलेशन विफल हो जाता है क्योंकि किसी पैकेज को कंपाइलर, नेटिव लाइब्रेरी या ऐसे पायथन संस्करण की आवश्यकता है जिसे प्रोजेक्ट सपोर्ट नहीं करता है, तो वर्चुअल एनवायरनमेंट स्वयं सही ढंग से फिर से बनाया गया हो सकता है जबकि उस डिपेंडेंसी को अभी भी उसकी प्रलेखित पूर्वापेक्षा की आवश्यकता हो सकती है। पैकेज या प्रोजेक्ट के इंस्टॉलेशन मार्गदर्शन को पढ़ें और विशिष्ट त्रुटि का समाधान करें; sudo pip का उपयोग करके या सिस्टम पायथन फ़ाइलों का स्वामित्व बदलकर प्रतिक्रिया न दें। Homebrew प्रबंधित डायरेक्टरीज़ के लिए इन वर्कअराउंड्स के खिलाफ सलाह देता है। Homebrew: Language Runtimes and Packages

5. जांचें कि सुधारा गया एनवायरनमेंट सक्रिय है

पुष्टि करें कि चयनित इंटरप्रेटर नए .venv के अंदर है, फिर प्रोजेक्ट के सामान्य कमांड या परीक्षण निर्देशों को चलाएं:

python -c 'import sys; print(sys.executable)'

प्रिंट किया गया पाथ प्रोजेक्ट की .venv डायरेक्टरी की ओर इंगित करना चाहिए। यदि यह कहीं और इंगित करता है, तो प्रोजेक्ट रूट से एनवायरनमेंट को फिर से सक्रिय करें और शेल स्टार्टअप सेटिंग्स या कमांड उपनामों (aliases) की जांच करें जो पायथन चयन को बदलते हैं। यह जांच इंटरप्रेटर चयन की पुष्टि करती है; यह यह साबित नहीं करती कि प्रोजेक्ट की प्रत्येक डिपेंडेंसी या एप्लिकेशन सुविधा काम करती है।

स्थानांतरित किए गए वर्चुअल एनवायरनमेंट को डिस्पोजेबल मानना सबसे अच्छा है: सोर्स कोड और डिपेंडेंसी रिकॉर्ड को सुरक्षित रखें, फिर प्रोजेक्ट वर्तमान में जहां भी स्थित हो, वहां .venv को दोबारा बनाएं। किसी अन्य स्थानांतरण के बाद इन चरणों को दोहराना सबसे विश्वसनीय और प्रलेखित समाधान मार्ग है।

स्रोत