मैं हाल ही में उपयोग करते समय एक मुद्दा में भाग pipके -Iध्वज है कि मैं दस्तावेज़ कहीं करना चाहता था:
-Iआगे बढ़ने से पहले मौजूदा पैकेज की स्थापना रद्द नहीं करेगा ; यह सिर्फ पुराने के शीर्ष पर इसे स्थापित करेगा। इसका मतलब यह है कि संस्करणों के बीच हटा दी जानी चाहिए किसी भी फाइल को जगह में छोड़ दिया जाएगा। यह अजीब व्यवहार का कारण बन सकता है अगर वे फ़ाइलें अन्य स्थापित मॉड्यूल के साथ नाम साझा करती हैं।
उदाहरण के लिए, मान लें कि नाम का एक पैकेज है package। packageएस फ़ाइलों में से एक में , वे उपयोग करते हैं import datetime। अब, package@2.0.0यह मानक पुस्तकालय datetimeमॉड्यूल को इंगित करता है , लेकिन अंदर package@3.0.0, उन्होंने datetime.pyमानक पुस्तकालय संस्करण (जो भी कारण के लिए) के प्रतिस्थापन के रूप में एक स्थानीय जोड़ा ।
अब मैं कहता हूं कि मैं दौड़ता हूं pip install package==3.0.0, लेकिन फिर बाद में महसूस होता है कि मैं वास्तव में संस्करण चाहता था 2.0.0। अगर मैं अब भागता हूं pip install -I package==2.0.0, तो पुरानी datetime.pyफ़ाइल को हटाया नहीं जाएगा, इसलिए किसी भी कॉल को import datetimeगलत मॉड्यूल आयात करना होगा।
मेरे मामले में, यह अजीब सिंटैक्स त्रुटियों के साथ प्रकट हुआ क्योंकि पैकेज के नए संस्करण में एक फ़ाइल जोड़ी गई जो केवल पायथन 3 के साथ संगत थी, और जब मैंने पायथन 2 का समर्थन करने के लिए पैकेज के संस्करणों को डाउनग्रेड किया, तो मैंने पायथन-3-केवल मॉड्यूल का आयात जारी रखा।
इसके आधार पर, मैं तर्क दूंगा कि पुराने पैकेज को अनइंस्टॉल करना हमेशा -Iस्थापित पैकेज संस्करणों को अपडेट करते समय उपयोग करने के लिए बेहतर होता है ।
pip install MySQL_python==1.8.9