क्या PATH
पायथन का उपयोग करके प्लेटफ़ॉर्म स्वतंत्र तरीके से पर्यावरण चर को संशोधित करने का एक तरीका है ?
के समान कुछ os.path.join()
?
जवाबों:
आपको संशोधित करने में सक्षम होना चाहिए os.environ
।
चूंकि os.pathsep
अलग-अलग रास्तों को अलग करने के लिए चरित्र है, इसलिए आपको प्रत्येक नए पथ को जोड़ने के लिए इसका उपयोग करना चाहिए:
os.environ["PATH"] += os.pathsep + path
या, यदि सूची में जोड़ने के लिए कई रास्ते हैं:
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
जैसा कि आपने उल्लेख किया है, os.path.join
प्रत्येक अलग-अलग पथ के लिए भी उपयोग किया जा सकता है जो आपको उस मामले में संलग्न करना होगा जो आपको उन्हें अलग-अलग हिस्सों से बनाना है।
os.pathsep
मेरा उल्लेख (PATH के लिए विशिष्ट) का मतलब है ?
os.path.sep != os.pathsep
।
कृपया ध्यान दें कि os.environ
वास्तव में एक शब्दकोश नहीं है। यह एक विशेष शब्दकोश है- वस्तु की तरह जो वास्तव में सेटेनव का उपयोग करके वर्तमान प्रक्रिया में पर्यावरण चर निर्धारित करता है ।
>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'
इसका मतलब है कि PATH
(और अन्य पर्यावरण चर) एक ही प्रक्रिया में सी कोड चलाने के लिए दिखाई देंगे ।
(चूंकि टिप्पणियों में प्रारूपण नहीं हो सकता है, मुझे इसे एक उत्तर में रखना होगा, लेकिन मुझे ऐसा लगता है कि यह बनाने के लिए एक महत्वपूर्ण बिंदु है। यह वास्तव में 'निर्यात' के बराबर नहीं होने के बारे में टिप्पणी पर एक टिप्पणी है ।)
पाइथन में पर्यावरण चर को संशोधित करने के बारे में जागरूक होने के लिए, यह है कि "निर्यात" शेल कमांड के बराबर नहीं है। वर्तमान प्रक्रिया में परिवर्तन का कोई तरीका नहीं है, केवल बाल प्रक्रियाएं हैं।
os.system
, जैसे आदेश , os.popen
या subprocess.Popen
फिर इसका उपयोग किया जाना चाहिए। अन्यथा यह बहुत ज्यादा बेकार है।
export
एक चर को सभी बाल प्रक्रियाओं के वातावरण में कॉपी करने का कारण बनता है, लेकिन मूल प्रक्रिया पर कोई प्रभाव नहीं पड़ता है।