संपादित करें: Ulf Rompe की टिप्पणी के आधार पर, यह महत्वपूर्ण है कि आप "0" के बजाय "1" का उपयोग करें , अन्यथा आप sys.path को तोड़ देंगे ।
मैं काफी समय से (एक साल से अधिक समय से) अजगर कर रहा हूं, और मैं हमेशा इस उलझन में रहता हूं कि लोग आपको sys.path.append()
इसकी बजाय सलाह क्यों देते हैं sys.path.insert()
। मुझे प्रदर्शित करते हैं।
मान लीजिए कि मैं PyWorkbooks नाम के एक मॉड्यूल पर काम कर रहा हूं (जो कि मेरे कंप्यूटर पर स्थापित है), लेकिन मैं एक साथ एक अलग मॉड्यूल पर काम कर रहा हूं (चलो PyJob कहते हैं) जो 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
इससे अतीत में मेरे लिए कुछ हैंगअप हुआ है, और मैं वास्तव में इसे पसंद करूंगा यदि हम (एक समुदाय के रूप में) ने सिफारिश करना शुरू कर दिया sys.path.insert(1, path)
, जैसे कि आप मैन्युअल रूप से एक रास्ता सम्मिलित कर रहे हैं, मुझे लगता है कि यह कहना सुरक्षित है कि आप जो चाहते हैं वह है उपयोग करने के लिए!
या मेरे पास कुछ गलत है? यह एक सवाल है जो कभी-कभी मुझे परेशान करता है और मैं इसे खुले में चाहता था!
sys.path.insert(1, dev_folder)
लेकिन यह अभी भी देव मॉड्यूल नहीं ढूंढ रहा है , और केवल स्थापित मॉड्यूल का उपयोग कर रहा है। मैं यह कैसे तय करुं?