स्थायी रूप से पायथन में sys.path के लिए एक फ़ाइल पथ जोड़ना


97

मेरे पास एक फ़ाइल थी example_file.py, जिसे मैं विभिन्न अन्य फ़ाइलों से उपयोग करना चाहता था, इसलिए मैंने फ़ाइल का उपयोग करने के लिए इस फ़ाइल को किसी अन्य फ़ाइल में जोड़ने और आयात example_file.pyकरने का निर्णय लिया sys.path। ऐसा करने के लिए, मैंने IPython में निम्नलिखित कार्य किया।

import sys
sys.path
sys.path.append('/path/to/the/example_file.py')
print(sys.path)

मैं अपने द्वारा जोड़े गए पथ को देख सकता था, और जब मैंने इस फ़ाइल को इस तरह से किसी अन्य निर्देशिका पथ से आयात करने का प्रयास किया:

import example_file

यह ठीक काम करता है, लेकिन एक बार जब मैं आईपीथॉन से बाहर आया, तो इसे फिर से दर्ज किया, और जाँच की sys.path, मैंने देखा कि जो रास्ता मैंने जोड़ा था वह मौजूद नहीं था, इसलिए मैं पायथन में स्थायी रूप से sys.path के लिए एक रास्ता कैसे जोड़ूं?


3
अपने कोड को एक उचित पैकेज बनाएं, इसे आसान बनाएं_अनुकूलित करें और अपने जीवन के बाकी हिस्सों (टिंकरिंग के बजाय) के लिए खुश रहें। इसके अलावा: हर दस्तावेज आपको स्पष्ट रूप से बताता है कि sys.path.append()एक निर्देशिका को स्वीकार करता है जिसमें फ़ाइल होती है और एक फ़ाइल के लिए कुछ नहीं है।
एंड्रियास जंग



सिस्टम पथ के साथ भ्रमित न करें PYTHONPATH
बुरहान खालिद

जवाबों:


95

कुछ तरीके हैं। सबसे सरल में से एक my-paths.pthफ़ाइल बनाना है (जैसा कि यहां वर्णित है )। यह केवल एक फाइल है .pthजिसे आपने अपने सिस्टम site-packagesडायरेक्टरी में डाला है । फ़ाइल की प्रत्येक पंक्ति पर आप एक निर्देशिका नाम रखते हैं, इसलिए आप वहां एक पंक्ति डाल सकते हैं /path/to/the/और यह उस निर्देशिका को पथ में जोड़ देगा।

आप PYTHONPATH पर्यावरण चर का उपयोग भी कर सकते हैं, जो कि सिस्टम PATH चर की तरह है, लेकिन इसमें निर्देशिकाएं शामिल हैं जिन्हें जोड़ा जाएगा sys.pathप्रलेखन देखें ।

ध्यान दें कि आप जो भी करते हैं, sys.pathउसमें निर्देशिका नहीं फाइलें शामिल हैं। आप "एक फ़ाइल नहीं जोड़ सकते हैं sys.path"। आप हमेशा इसकी डायरेक्टरी को जोड़ते हैं और फिर आप फाइल को आयात कर सकते हैं।


1
ठीक है धन्यवाद ठीक है, मैंने अपनी निर्देशिका को जोड़ा है जिसमें फ़ाइल और उसके काम शामिल हैं जब मैंने फ़ाइल को किसी अन्य स्थान से आयात किया है, तो समस्या को बुझाओ जब मैं ipython से बाहर आया और फिर से अपने पथ की जांच करने के लिए looed, यह प्रकट नहीं होता है, मैं इसे हर बार नहीं करना चाहता जब मैं कोड दर्ज करता हूं, मैं निर्देशिका पथ को sys.path में स्थायी रूप से जोड़ना चाहता हूं, यह कैसे करना है
शिव कृष्ण बावंडला

@Kouripm: आपकी टिप्पणी से पता चलता है कि आपने वास्तव में मेरे सुझाव का पालन नहीं किया, और न ही ऊपर दिए गए डुप्लिकेट पोस्ट में दिए गए सुझाव।
ब्रेनबर्न

1
siteपैकेज सही था।
ज़िनाब अब्बासिमज़र

8
sys.path.append('C:\\python34\\lib\\site-packages')धन्यवाद के साथ मेरा मुद्दा तय किया !
टायलरलिंडेल

पश्चात के लिए: .pthफ़ाइल वह है जो साइट-मॉड्यूल प्रलेखन कॉल करती है path configuration file। पथ विन्यास फाइल के बारे में ध्यान दें:no check is made that the item refers to a directory rather than a file. No item is added to sys.path more than once. Blank lines and lines beginning with # are skipped. Lines starting with import (followed by space or tab) are executed.
मिन्ह ट्रान्स

1

इस तरह से मेरे लिए काम किया:

आपको जो रास्ता पसंद हो उसे जोड़ना:

export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add

जाँच: आप 'निर्यात' cmd चला सकते हैं और आउटपुट की जाँच कर सकते हैं या आप इस cmd का उपयोग करके जाँच कर सकते हैं:

python -c "import sys; print(sys.path)"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.