2010-06-24 15 views
76

मुझे पता है कि इसे अपने/etc/प्रोफ़ाइल में और मेरे पर्यावरण चर में कैसे सेट करें।पायथन लिपि में, मैं पायथनपैट कैसे सेट करूं?

लेकिन अगर मैं इसे एक स्क्रिप्ट के दौरान सेट करना चाहता हूं तो क्या होगा? क्या यह ओएस, sys आयात करता है? मैं यह कैसे करुं?

उत्तर

128

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

sys.path.append('/path/to/whatever') 

वास्तव में, sys.path पथ विभाजक वर्ण (: लिनक्स-जैसा सिस्टम पर, ; Windows पर) पर PYTHONPATH का मूल्य विभाजित करके आरंभ नहीं हो जाता।

आप site.addsitedir का उपयोग करके निर्देशिका भी जोड़ सकते हैं, और यह विधि आपके द्वारा पास की गई निर्देशिकाओं में मौजूद .pth फ़ाइलों को भी ध्यान में रखेगी। (यही कारण है कि निर्देशिका के साथ मामला आप PYTHONPATH में निर्दिष्ट नहीं होगा।)

+3

इस उत्तर को पोस्ट करने के बाद से कई सालों रहे हैं, लेकिन मैं अभी भी यह जोड़ना चाहता हूं कि यदि आप यह सुनिश्चित करना चाहते हैं कि पाइथन आयात करते समय अन्य सभी के सामने नई निर्देशिका की जांच करता है, तो आपको पहले नई निर्देशिका डालना चाहिए सूची, जैसा कि 'sys.path.insert (0, '/ path/to/whatever') में है। – wecsam

25

आप os.environ के माध्यम से मिलता है और सेट वातावरण चर कर सकते हैं:

import os 
user_home = os.environ["HOME"] 

os.environ["PYTHONPATH"] = "..." 

लेकिन अपने दुभाषिया पहले से ही चलाता है के बाद से, यह कोई प्रभाव नहीं पड़ेगा। आपका

import sys 
sys.path.append("...") 

जो सरणी है, अपने PYTHONPATH दुभाषिया स्टार्टअप पर करने के लिए परिवर्तित हो जाएगा का उपयोग कर बेहतर।

4

PYTHONPATH sys.path में समाप्त होता है, जिसे आप रनटाइम पर संशोधित कर सकते हैं।

import sys 
sys.path += ["whatever"] 
+0

क्या इस उत्तर को @DavidZ से एक को पसंद करने का कोई कारण है? – Dror

9

क्षमा सवाल फिर से खोलना है, लेकिन मुझे लगता है कि यह मदद कर सकते हैं किसी के लिए:

आप बिना जाँच यह पहले से ही जोड़ा जाता है sys.path.append('dir/to/path') डाल, तो आप sys.path में एक लंबी सूची उत्पन्न कर सकता है। उसके लिए, मैं इस अनुशंसा करते हैं:

import sys 
import os # if you want this directory 

try: 
    sys.path.index('/dir/path') # Or os.getcwd() for this directory 
except ValueError: 
    sys.path.append('/dir/path') # Or os.getcwd() for this directory 

मैं माफी चाहता हूँ अगर मैं किसी प्रश्न को फिर से खोलने नाराज।

+0

अच्छा। बहुत पाइथनिक। – PartialOrder

0

आप PYTHONPATH को os.environ['PATHPYTHON']=/some/path पर सेट कर सकते हैं, तो आपको नए जोड़े गए पथ को प्रभावी बनाने के लिए पाइथन खोल को पुनरारंभ करने के लिए os.system('python') पर कॉल करने की आवश्यकता है।

संबंधित मुद्दे