संपादित करें: Ulf Rompe की टिप्पणी के आधार पर, यह महत्वपूर्ण है कि आप "0" के बजाय "1" का उपयोग करें, अन्यथा आप sys.path तोड़ देंगे।sys.path.insert (1, पथ) के बजाय sys.path.append (पथ) का उपयोग क्यों करें?
मैं थोड़ी देर के लिए पाइथन कर रहा हूं (एक वर्ष से अधिक), और मैं हमेशा उलझन में हूं कि क्यों लोग आपको के बजाय sys.path.append()
का उपयोग करने की सलाह देते हैं। मुझे प्रदर्शन करने दो।
मान लें कि मैं PyWorkbooks (जो मेरे कंप्यूटर पर स्थापित है) नामक एक मॉड्यूल पर काम कर रहा हूं, लेकिन मैं एक साथ विभिन्न मॉड्यूल पर काम कर रहा हूं (चलो पीयोजोब) जो PyWorkbooks को शामिल करता है। जैसा कि मैं PyJob पर काम कर रहा हूं, मुझे PyWorkbooks में त्रुटियां मिलती हैं जिन्हें मैं सही कर रहा हूं, इसलिए मैं एक विकास संस्करण आयात करना चाहता हूं।
दोनों पर काम करने के कई तरीके हैं (उदाहरण के लिए, मैं अपनी PyWorkbooks परियोजना को PyJob के अंदर रख सकता हूं), लेकिन कभी-कभी मुझे अभी भी पथ के साथ खेलना होगा। हालांकि, मैं उस फ़ोल्डर में sys.path.append()
नहीं कर सकता जहां PyWorkbooks पर है। क्यूं कर? क्योंकि पाइथन को मेरी स्थापित PyWorkbooks पहले मिल जाएगी!
यही कारण है कि आप एक sys.path.insert क्या करना है (1, path_to_dev_pyworkbooks)
सारांश में:
sys.path.append(path_to_dev_pyworkbooks)
import PyWorkbooks # does NOT import dev pyworkbooks, imports installed one
या:
sys.path.insert(1, path_to_dev_pyworkbooks) # based on comments you should use **1 not 0**
import PyWorkbooks # imports correct file
यह कुछ कारण बना हुआ है अतीत में मेरे लिए hangups, और मैं वास्तव में यह पसंद करेंगे अगर हम (एक समुदाय के रूप में) sys.path.insert(1, path)
की सिफारिश करना शुरू किया, जैसे कि आप मैन्युअल रूप से पथ डाल रहे हैं, मुझे लगता है कि यह कहना सुरक्षित है कि वह पथ है आप उपयोग करना चाहते हैं!
या क्या मेरे पास कुछ गलत है? यह एक सवाल है जो कभी-कभी मुझे परेशान करता है और मैं इसे खुले में चाहता था!
मैंने किया है ys.path.insert (1, dev_folder) 'लेकिन यह अभी भी देव मॉड्यूल नहीं ढूंढ रहा है, और केवल स्थापित मॉड्यूल का उपयोग कर रहा है। मैं यह कैसे तय करुं? – endolith