पर्यावरण चर मूल्यों का उपयोग कैसे करें?


2112

मैंने एक पर्यावरण चर निर्धारित किया है जिसे मैं अपने पायथन एप्लिकेशन में एक्सेस करना चाहता हूं। मुझे इसका मूल्य कैसे मिलेगा?

जवाबों:


3158

Os.environ के माध्यम से पर्यावरण चर पर पहुँचा जाता है

import os
print(os.environ['HOME'])

या आप का उपयोग करके सभी पर्यावरण चर की एक सूची देख सकते हैं:

os.environ

जैसा कि कभी-कभी आपको एक पूरी सूची देखने की आवश्यकता हो सकती है!

# using get will return `None` if a key is not present rather than raise a `KeyError`
print(os.environ.get('KEY_THAT_MIGHT_EXIST'))

# os.getenv is equivalent, and can also give a default value instead of `None`
print(os.getenv('KEY_THAT_MIGHT_EXIST', default_value))

विंडोज पर अजगर डिफ़ॉल्ट स्थापना है C:\Python। यदि आप अजगर को चलाते समय यह पता लगाना चाहते हैं कि आप क्या कर सकते हैं:

import sys
print(sys.prefix)

1
हैलो रॉड, 'डिफॉल्ट-इंस्टॉलेशन' से संबंधित आपके प्रभावी उत्तर के लिए धन्यवाद; लिंक के माध्यम से जाने के बजाय इसे जल्दी समझने के लिए प्रभावी है। यह वास्तव में मुझे भाता है :) लेकिन मेरे (1) प्रश्न के बारे में कृपया कमांड देखें और नीचे दिए गए स्निपेट को देखें: >>> आयात os >>> प्रिंट os.environ ['PYTHONPATH'] Traceback (सबसे हालिया कॉल अंतिम): "फाइल" <कंसोल> ", पंक्ति 1, में <मॉड्यूल> फ़ाइल" C: \ Python25 \ lib \ os.py ", पंक्ति 435, getitem वापसी में self.data [key.upper ()] KeyError: 'PYTHONPATH' >>> प्रिंट os.environ.get ('PYTHONPATH') कोई नहीं >>> // PLZ जारी रखने के लिए ... //
अमित यादव

एक तरह से स्क्रिप्ट एक्सेप्शन फेंक रहा है जबकि दूसरा कोई नहीं दे रहा है। तो, क्या इसका सार्थक मूल्य प्राप्त करने का कोई तरीका है या मैं गलत तरीके से कर रहा हूं ??? अमित।
अमित यादव

7
os.environ एक शब्दकोश है। शब्दकोश में मौजूद कुंजी को एक्सेस नहीं करने की कोशिश करने से KeyError फेंकेगी। जब कुंजी मौजूद नहीं होती है, तो विधि प्राप्त करें। क्या आपके पास PYTHONPATH सेट है? क्या आप PATH जैसे एक चर के साथ कोशिश कर सकते हैं, जो अस्तित्व की गारंटी है? क्या यह एक सार्थक मूल्य लौटाता है?
रॉड

2
PYTHONPATH का उपयोग Python (sys.path) के नए खोज पथ को Python के बाहर से जोड़ने के लिए किया जाता है। Docs.python.org/using/cmdline.html#environment-variables
रॉड

11
.get()एक डिफ़ॉल्ट भी दिया जा सकता है।
ग्रिंगो सुवे

242

यह देखने के लिए कि क्या कुंजी मौजूद है (रिटर्न Trueया False)

'HOME' in os.environ

get()कुंजी को प्रिंट करते समय भी आप उपयोग कर सकते हैं ; यदि आप डिफ़ॉल्ट का उपयोग करना चाहते हैं तो उपयोगी है।

print(os.environ.get('HOME', '/home/username/'))

/home/username/डिफ़ॉल्ट कहां है


3
कौन सा बेहतर है, "HOME" in os.environया os.environ.get('HOME')?
एंडोलिथ

11
@endolith वे अलग चीजें करते हैं। पहला रिटर्न ट्रू या फाल्स, जबकि दूसरा वैल्यू देता है, संभवतः कोई नहीं।
ट्रेंटन

@endolith, सही प्रश्न है "HOME" in os.environबनाम os.environ.get('HOME') is None। जैसा कि आप पहले देख सकते हैं कि काम करने के लिए कहीं अधिक पठनीय और आरामदायक है।
कोनस्टेंटिन सेकेरेश

58

मूल प्रश्न (पहला भाग) "पायथन में पर्यावरण चर की जांच कैसे करें" था।

अगर $ FOO सेट है, तो यहां कैसे जांच करें:

try:  
   os.environ["FOO"]
except KeyError: 
   print "Please set the environment variable FOO"
   sys.exit(1)

66
Os.environ में "FOO"
ealfonso

4
कोशिश और तेज हो सकती है।
Env var का मामला

13
@RandomInsano तेजी से = / = बेहतर। यह कोड एक "if 'FOO' not in os.environ: ..."ब्लॉक की तुलना में कम पठनीय लगता है
डांगक्रॉस

44

आप उपयोग कर पर्यावरण चर तक पहुँच सकते हैं

import os
print os.environ

PYTHONPATH या PYTHONHOME पर्यावरण चर की सामग्री को देखने का प्रयास करें, शायद यह आपके दूसरे प्रश्न के लिए सहायक होगा। हालाँकि आपको इसे स्पष्ट करना चाहिए।


29

पर्यावरण चर के रूप में:

import os
print os.environ["HOME"]

मुझे डर है कि एक सभ्य जवाब संभव होने से पहले आपको अपने दूसरे बिंदु को थोड़ा और अधिक मांस देना होगा।


27
import os
for a in os.environ:
    print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")

जो सभी पर्यावरण चर को उनके मूल्यों के साथ प्रिंट करेगा।


27

वास्तव में इसे दूर किया जा सकता है:

import os

for item, value in os.environ.items():
    print('{}: {}'.format(item, value))

या केवल:

for i, j in os.environ.items():
    print(i, j)

पैरामीटर में मान देखने के लिए:

print(os.environ['HOME'])

या:

print(os.environ.get('HOME')

मान सेट करने के लिए:

os.environ['HOME'] = '/new/value'

4
नहीं, यह उत्तर वास्तव में मौजूदा उत्तरों के शीर्ष पर कुछ भी नहीं जोड़ता है
बार्ट

1
इसे हटा दिया जाना चाहिए, यह अन्य उत्तरों की नकल है। str.formatसिर्फ एक फैंसी जोड़ है।
संयोजकचक्र

>>> import os, pprint; pprint.pprint(list(os.environ.items()))
noobninja

18

यदि आप किसी उत्पादन वेब अनुप्रयोग कोड में कोड का उपयोग करने की योजना बना रहे हैं
, तो Django / फ्लास्क जैसी किसी भी वेब फ्रेमवर्क का उपयोग करते हुए, एन्वापर्स जैसी परियोजनाओं का उपयोग करें, इसका उपयोग करके आप अपने परिभाषित प्रकार के रूप में मूल्य पढ़ सकते हैं।

from envparse import env
# will read WHITE_LIST=hello,world,hi to white_list = ["hello", "world", "hi"]
white_list = env.list("WHITE_LIST", default=[]) 
# Perfect for reading boolean
DEBUG = env.bool("DEBUG", default=False)

नोट: kennethreitz का autoenv प्रोजेक्ट विशिष्ट पर्यावरण चर बनाने के लिए एक अनुशंसित उपकरण है, कृपया ध्यान दें कि जो लोग autoenvकृपया उपयोग कर रहे हैं वे .envफ़ाइल को निजी (सार्वजनिक के लिए दुर्गम) रखें


11

कई महान पुस्तकालय भी हैं। उदाहरण के लिए एनवीएस आपको अपने पर्यावरण चर से वस्तुओं को पार्स करने की अनुमति देगा, जो कि रेड है। उदाहरण के लिए:

from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']

3

Django के लिए देखें ( https://github.com/joke2k/django-environ )

$ pip install django-environ

import environ
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env()

# False if not in os.environ
DEBUG = env('DEBUG')

# Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')

0

आप भी इसे आजमा सकते हैं

सबसे पहले, स्थापित करें python-decouple

pip install python-decouple

इसे अपनी फ़ाइल में आयात करें

from decouple import config

फिर env वेरिएबल प्राप्त करें

SECRET_KEY=config('SECRET_KEY')

अजगर पुस्तकालय के बारे में और अधिक पढ़ें यहाँ

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