मैं हाल ही में उपयोग करते समय एक मुद्दा में भाग 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