एनवायरनमेंट वेरिएबल्स आपके डेवलपमेंट प्रोजेक्ट की कॉन्फ़िगरेशन जानकारी को लचीले और सुरक्षित तरीके से रखने का एक प्रभावी तरीका हैं। इनमें डेटा के key-value जोड़े होते हैं जिन्हें Python जैसी प्रोग्रामिंग भाषाएँ एक्सेस कर सकती हैं, और यह जानकारी अनचाही नज़रों से छिपी रहती है। इस ट्यूटोरियल में, आप Python में एनवायरनमेंट वेरिएबल्स बनाने और मैनेज करने के लिए ज़रूरी अवधारणाएँ और तकनीकें सीखेंगे।
एनवायरनमेंट वेरिएबल्स क्या हैं?
एनवायरनमेंट वेरिएबल्स नाम-मूल्य (name-value) जोड़े होते हैं जो आपके ऑपरेटिंग सिस्टम में सुरक्षित रूप से कहीं संग्रहीत रहते हैं। आम तौर पर, वे कुछ इस तरह दिखते हैं:
Python में, आप ऐसे वेरिएबल्स का उपयोग अपने डेवलपमेंट प्रोजेक्ट से जुड़ी संवेदनशील जानकारी रखने के लिए कर सकते हैं। संवेदनशील जानकारी हो सकती है:
दूसरों के अनुप्रयोगों तक पहुँचने के लिए API keys
स्क्रिप्ट्स के माध्यम से अनुप्रयोगों में लॉग इन करने के लिए उपयोगकर्ता नाम और पासवर्ड
डेटाबेस क्रेडेंशियल्स
ऐसी कोई भी चीज़ जो गलती से उजागर होने पर सुरक्षा समस्या पैदा कर सकती है।
उदाहरण के लिए, यदि आप एक Python स्क्रिप्ट लिखते हैं जो खुलकर आपके AWS क्रेडेंशियल्स का उपयोग करती है और आप गलती से वह स्क्रिप्ट GitHub पर कमिट कर देते हैं, तो यह संभव है कि कोई दुर्भावनापूर्ण पक्ष उसे ढूंढ ले और आपके AWS बिल में भारी वृद्धि कर दे (ऐसा होना जाना-पहचाना है)।
एनवायरनमेंट वेरिएबल्स का एक और लाभ है कॉन्फ़िगरेबिलिटी। आप केवल एनवायरनमेंट वेरिएबल्स में बदलाव करके सेटिंग्स (जैसे डेटाबेस URLs, फाइल पाथ्स) आसानी से समायोजित कर सकते हैं, बिना अपना कोड बदले। यह सुविधा खास तौर पर तब उपयोगी होती है जब आप अपने प्रोजेक्ट के कई हिस्सों में एक ही सेटिंग का इस्तेमाल करते हैं।
तो, आइए देखें कि Python में इनके साथ कैसे काम करें।
Python के os मॉड्यूल में एनवायरनमेंट वेरिएबल्स कैसे प्राप्त करें
अपने सिस्टम में मौज़ूद एनवायरनमेंट वेरिएबल्स प्राप्त करने के लिए आप os मॉड्यूल का उपयोग कर सकते हैं। इसमें वेरिएबल्स प्राप्त करने के लिए .getenv फ़ंक्शन होता है:
.getenv() फ़ंक्शन कुछ भी वापस नहीं करता, लेकिन हम इस व्यवहार को बदल सकते हैं। आप इसका default पैरामीटर इस्तेमाल कर सकते हैं ताकि वेरिएबल न होने पर एक कस्टम वैल्यू वापस मिले:
os.getenv("COMPUTER_PASSWORD", default="Nope!")संचालित द्वारा
चूँकि यह एक dictionary है, आप ब्रैकेट नोटेशन (अनुशंसित नहीं) या .get() फ़ंक्शन से वैल्यू प्राप्त कर सकते हैं।
os को शायद सबसे महत्वपूर्ण सिस्टम वेरिएबल PATH तक भी पहुँच है। PATH आपके सिस्टम पर इंस्टॉल सभी executables के absolute paths रखता है, इसलिए यह काफ़ी लंबा होता है:
हालाँकि, यह तरीका बहुत उपयोगी नहीं है क्योंकि नई वैल्यूज़ मौजूदा सेशन खत्म होते ही खो जाएँगी।
सौभाग्य से, .env फाइलों (उच्चारण: डॉट-एन्व) का उपयोग करके एनवायरनमेंट वेरिएबल्स को अधिक स्थायी रूप से स्टोर करने का एक तरीका है। इन फाइलों का सिंटैक्स एक जैसा होता है, यानी वे किसी भी ऑपरेटिंग सिस्टम पर काम करेंगी। एक नमूना .env फाइल कुछ इस तरह दिखती है:
CUSTOM_API_LINK=https://myapi.com/v1/api
SNOWFLAKE_USERNAME=bexgboost
MYSQL_DATABASE_PASSWORD=as3ndf03
संचालित द्वारा
अभी के लिए, यह केवल तीन वेरिएबल्स परिभाषित करती है। इस फाइल को पढ़ने और इसकी सामग्री निकालने के लिए, हम python-dotenv नामक लाइब्रेरी का उपयोग करेंगे:
.env फाइलों का सिंटैक्स काफ़ी लचीला है। उदाहरण के लिए, आप multi-line वैल्यूज़ (कोट्स अनिवार्य) वाले वेरिएबल्स सेट कर सकते हैं:
LONG_ENV="This is an environment
variable with a long message"
संचालित द्वारा
एस्केप कैरेक्टर्स का उपयोग करें:
LONG_ENV="This value uses an \"escape character"संचालित द्वारा
आप भविष्य के संदर्भ के लिए फाइल में टिप्पणियाँ (comments) भी जोड़ सकते हैं:
# You can also add comments anywhere with a hashtag
CUSTOM_API_LINK=https://myapi.com/v1/api
SNOWFLAKE_USERNAME=bexgboost
MYSQL_DATABASE_PASSWORD=as3ndf03
संचालित द्वारा
आप ${VAR_NAME} सिंटैक्स का उपयोग करके एक वेरिएबल की वैल्यू दूसरे के अंदर भी उपयोग कर सकते हैं:
FIRST_NAME=John
LAST_NAME=Doe
FULL_NAME="I am ${FIRST_NAME} ${LAST_NAME}"संचालित द्वारा
python-dotenv के साथ कस्टम एनवायरनमेंट वेरिएबल्स प्राप्त करना
कस्टम वेरिएबल्स प्राप्त करना पहले जैसा ही है — बस os मॉड्यूल का उपयोग करें:
Python-dotenv इंस्टॉल करने के बाद, यदि आप Jupyter का उपयोग कर रहे हैं तो आपको इसे Python में इम्पोर्ट करने की ज़रूरत नहीं है। यह लाइब्रेरी एक Jupyter मैजिक मेथड के साथ आती है जो इसे स्वतः लोड कर देती है:
# Run this anywhere in the notebook to load EVs from .env%load_ext dotenv
%dotenv
संचालित द्वारा
यदि आप अलग-अलग नामों के साथ कई .env फाइलें बनाते हैं, तो अपनी .gitignore फाइल बदलें ताकि वे सभी git इंडेक्सिंग से बाहर रहें:
# Pay attention to the asterisk *
$ echo ".env*">>.gitignore
संचालित द्वारा
निष्कर्ष
इस लेख में, हमने Python में एनवायरनमेंट वेरिएबल्स को प्रभावी ढंग से मैनेज करने के लिए सभी आवश्यक अवधारणाएँ और तकनीकें सीखीं। हमने देखा कि Python OS मॉड्यूल से मौज़ूदा वेरिएबल्स कैसे प्राप्त करें और python-dotenv लाइब्रेरी से कस्टम वैल्यूज़ कैसे बनाएँ। हमने यह भी सीखा कि सर्वोत्तम प्रथाओं के अनुरूप .env फाइलें कैसे लिखें।
आप हमारा Python Programming Skill Track भी देख सकते हैं, जो आपको शुरुआती से उन्नत Pythonista बनने तक व्यावहारिक अभ्यास और प्रोजेक्ट्स के माध्यम से ले जाएगा।
मैं 2 से अधिक वर्षों के अनुभव वाला डेटा साइंस कंटेंट क्रिएटर हूँ और Medium पर सबसे बड़े फॉलोइंग्स में से एक रखता हूँ। मुझे एआई और एमएल पर विस्तार से लेख लिखना पसंद है, जिसमें हल्का-सा व्यंग्यात्मक अंदाज रहता है—क्योंकि कुछ तो करना पड़ता है ताकि वे कम उबाऊ लगें। मैंने 130 से अधिक लेख और एक DataCamp कोर्स तैयार किया है, और एक और बन रहा है। मेरा कंटेंट 50 लाख से अधिक लोगों ने देखा है, जिनमें से 20 हज़ार लोग Medium और LinkedIn पर फॉलोअर्स बन गए।
अपने प्रोग्रामिंग कौशल को बेहतर बनाएं। कोड को अनुकूलित करना, फ़ंक्शन और परीक्षण लिखना, और सर्वोत्तम-अभ्यास सॉफ़्टवेयर इंजीनियरिंग तकनीकों का उपयोग करना सीखें।
एनवायरनमेंट वेरिएबल्स आपके डेवलपमेंट प्रोजेक्ट की कॉन्फ़िगरेशन जानकारी को लचीले और सुरक्षित तरीके से रखने का एक प्रभावी तरीका हैं। इनमें डेटा के key-value जोड़े होते हैं जिन्हें Python जैसी प्रोग्रामिंग भाषाएँ एक्सेस कर सकती हैं, और यह जानकारी अनचाही नज़रों से छिपी रहती है। इस ट्यूटोरियल में, आप Python में एनवायरनमेंट वेरिएबल्स बनाने और मैनेज करने के लिए ज़रूरी अवधारणाएँ और तकनीकें सीखेंगे।
एनवायरनमेंट वेरिएबल्स क्या हैं?
एनवायरनमेंट वेरिएबल्स नाम-मूल्य (name-value) जोड़े होते हैं जो आपके ऑपरेटिंग सिस्टम में सुरक्षित रूप से कहीं संग्रहीत रहते हैं। आम तौर पर, वे कुछ इस तरह दिखते हैं:
Python में, आप ऐसे वेरिएबल्स का उपयोग अपने डेवलपमेंट प्रोजेक्ट से जुड़ी संवेदनशील जानकारी रखने के लिए कर सकते हैं। संवेदनशील जानकारी हो सकती है:
उदाहरण के लिए, यदि आप एक Python स्क्रिप्ट लिखते हैं जो खुलकर आपके AWS क्रेडेंशियल्स का उपयोग करती है और आप गलती से वह स्क्रिप्ट GitHub पर कमिट कर देते हैं, तो यह संभव है कि कोई दुर्भावनापूर्ण पक्ष उसे ढूंढ ले और आपके AWS बिल में भारी वृद्धि कर दे (ऐसा होना जाना-पहचाना है)।
एनवायरनमेंट वेरिएबल्स का एक और लाभ है कॉन्फ़िगरेबिलिटी। आप केवल एनवायरनमेंट वेरिएबल्स में बदलाव करके सेटिंग्स (जैसे डेटाबेस URLs, फाइल पाथ्स) आसानी से समायोजित कर सकते हैं, बिना अपना कोड बदले। यह सुविधा खास तौर पर तब उपयोगी होती है जब आप अपने प्रोजेक्ट के कई हिस्सों में एक ही सेटिंग का इस्तेमाल करते हैं।
तो, आइए देखें कि Python में इनके साथ कैसे काम करें।
Python के os मॉड्यूल में एनवायरनमेंट वेरिएबल्स कैसे प्राप्त करें
अपने सिस्टम में मौज़ूद एनवायरनमेंट वेरिएबल्स प्राप्त करने के लिए आप
osमॉड्यूल का उपयोग कर सकते हैं। इसमें वेरिएबल्स प्राप्त करने के लिए.getenvफ़ंक्शन होता है:ऊपर, मैं सिस्टम उपयोगकर्ता नाम प्राप्त कर रहा हूँ, जो सभी सिस्टम्स में अंतर्निहित होता है। ऐसे और भी कई हैं, जैसे होम पाथ:
या आपके Conda executable का पाथ:
तो जब आप
condaकमांड्स चलाते हैं, आपका टर्मिनल इसी तरह जानता है कि कौन-सा एप्लिकेशन चलाना है।लेकिन अगर आप कोई ऐसा वेरिएबल प्राप्त करने की कोशिश करें जो मौजूद नहीं है, तो क्या होगा:
.getenv()फ़ंक्शन कुछ भी वापस नहीं करता, लेकिन हम इस व्यवहार को बदल सकते हैं। आप इसकाdefaultपैरामीटर इस्तेमाल कर सकते हैं ताकि वेरिएबल न होने पर एक कस्टम वैल्यू वापस मिले:.getenv() फ़ंक्शन मौज़ूदा वेरिएबल्स प्राप्त करने का सबसे अच्छा तरीका है।हालाँकि, अन्य स्रोतों में, आप अलग तरीके भी देख सकते हैं जैसे
.environएट्रिब्यूट, जो सभी एनवायरनमेंट वेरिएबल्स वाला एक dictionary लौटाता है:चूँकि यह एक dictionary है, आप ब्रैकेट नोटेशन (अनुशंसित नहीं) या
.get()फ़ंक्शन से वैल्यू प्राप्त कर सकते हैं।osको शायद सबसे महत्वपूर्ण सिस्टम वेरिएबल PATH तक भी पहुँच है।PATHआपके सिस्टम पर इंस्टॉल सभी executables के absolute paths रखता है, इसलिए यह काफ़ी लंबा होता है:PATHमें हर path को कॉलन से अलग किया जाता है। आइए मेरे सिस्टम परPATHकी लंबाई गिनें:79! बुरा नहीं है।
python-dotenv लाइब्रेरी का उपयोग करके Python में एनवायरनमेंट वेरिएबल्स को प्रभावी ढंग से मैनेज करना
कस्टम एनवायरनमेंट वेरिएबल्स सेट करना
अब जब हमें मौज़ूदा वेरिएबल्स निकालना आ गया है, तो देखते हैं कस्टम वेरिएबल्स कैसे सेट करें। पहला तरीका है
os.environdictionary का उपयोग करना:हालाँकि, यह तरीका बहुत उपयोगी नहीं है क्योंकि नई वैल्यूज़ मौजूदा सेशन खत्म होते ही खो जाएँगी।
सौभाग्य से,
.envफाइलों (उच्चारण: डॉट-एन्व) का उपयोग करके एनवायरनमेंट वेरिएबल्स को अधिक स्थायी रूप से स्टोर करने का एक तरीका है। इन फाइलों का सिंटैक्स एक जैसा होता है, यानी वे किसी भी ऑपरेटिंग सिस्टम पर काम करेंगी। एक नमूना .env फाइल कुछ इस तरह दिखती है:अभी के लिए, यह केवल तीन वेरिएबल्स परिभाषित करती है। इस फाइल को पढ़ने और इसकी सामग्री निकालने के लिए, हम
python-dotenvनामक लाइब्रेरी का उपयोग करेंगे:फिर, किसी Python स्क्रिप्ट या Jupyter Notebook में हम इसका
load_dotenvफ़ंक्शन इम्पोर्ट करेंगे और कॉल करेंगे:यदि यह मौजूदा डायरेक्टरी के भीतर
.envफाइल नहीं ढूँढ पाता, तो यह सभी पैरेंट डायरेक्टरीज़ में खोजेगा और मिल जाने पर True लौटाएगा।मैंने ऊपर वाली
.envफाइल अपने होम डायरेक्टरी~/.envमें रखी है; इसलिएload_dotenvउसे ढूँढ सका।अपनी खुद की फाइलें बनाने के लिए, आप टर्मिनल में
touchकमांड का उपयोग कर सकते हैं या VSCode जैसे किसी टेक्स्ट एडिटर का:.envफाइलों का सिंटैक्स काफ़ी लचीला है। उदाहरण के लिए, आप multi-line वैल्यूज़ (कोट्स अनिवार्य) वाले वेरिएबल्स सेट कर सकते हैं:एस्केप कैरेक्टर्स का उपयोग करें:
आप भविष्य के संदर्भ के लिए फाइल में टिप्पणियाँ (comments) भी जोड़ सकते हैं:
आप
${VAR_NAME}सिंटैक्स का उपयोग करके एक वेरिएबल की वैल्यू दूसरे के अंदर भी उपयोग कर सकते हैं:python-dotenvके साथ कस्टम एनवायरनमेंट वेरिएबल्स प्राप्त करनाकस्टम वेरिएबल्स प्राप्त करना पहले जैसा ही है — बस
osमॉड्यूल का उपयोग करें:सुनिश्चित करें कि आप पहले
load_dotenvकॉल करें।अगर आपकी
.envफाइल ऐसी जगह पर है जहाँload_dotenvनहीं पहुँच सकता, तो आप उसका सीधा path इस तरह दे सकते हैं:Jupyter में .env फाइलों के साथ काम करना
Python-dotenvइंस्टॉल करने के बाद, यदि आप Jupyter का उपयोग कर रहे हैं तो आपको इसे Python में इम्पोर्ट करने की ज़रूरत नहीं है। यह लाइब्रेरी एक Jupyter मैजिक मेथड के साथ आती है जो इसे स्वतः लोड कर देती है:फिर, आप दोबारा
osमॉड्यूल का उपयोग कर सकते हैं:Python में एनवायरनमेंट वेरिएबल्स के उपयोग के श्रेष्ठ तरीके
इस अनुभाग में, हम कुछ श्रेष्ठ तरीकों की सूची देंगे ताकि एनवायरनमेंट वेरिएबल्स सुरक्षित और पूरी तरह उपयोगी बने रहें।
1. हमेशा
.envफाइलों को.gitignoreमें जोड़ें ताकि वे गलती से GitHub पर कमिट न हो जाएँ।2. वेरिएबल्स परिभाषित करते समय वर्णनात्मक, पूरी तरह UPPERCASE नामों का उपयोग करें।
3. सिस्टम-व्यापी वेरिएबल्स के लिए एक एकल .env फाइल बनाएँ जिन्हें आपको हर प्रोजेक्ट में चाहिए।
4. अपनी .env फाइलों का स्कोप नियंत्रित करें। अपने डेवलपमेंट वर्कफ़्लो के अलग-अलग हिस्सों के लिए अलग-अलग फाइलें इस प्रकार बनाएँ:
load_dotenvफ़ंक्शन इन्हें पहचान लेगा।यदि आप अलग-अलग नामों के साथ कई
.envफाइलें बनाते हैं, तो अपनी.gitignoreफाइल बदलें ताकि वे सभी git इंडेक्सिंग से बाहर रहें:निष्कर्ष
इस लेख में, हमने Python में एनवायरनमेंट वेरिएबल्स को प्रभावी ढंग से मैनेज करने के लिए सभी आवश्यक अवधारणाएँ और तकनीकें सीखीं। हमने देखा कि Python OS मॉड्यूल से मौज़ूदा वेरिएबल्स कैसे प्राप्त करें और
python-dotenvलाइब्रेरी से कस्टम वैल्यूज़ कैसे बनाएँ। हमने यह भी सीखा कि सर्वोत्तम प्रथाओं के अनुरूप.envफाइलें कैसे लिखें।यदि आप Python सॉफ्टवेयर इंजीनियरिंग के बारे में और सीखना चाहते हैं, तो हमारा कोर्स देखें, Software Engineering Principles in Python।
आप हमारा Python Programming Skill Track भी देख सकते हैं, जो आपको शुरुआती से उन्नत Pythonista बनने तक व्यावहारिक अभ्यास और प्रोजेक्ट्स के माध्यम से ले जाएगा।