환경 변수 값에 액세스하는 방법?


답변:


3163

환경 변수는 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))

Windows에서 Python 기본 설치는 입니다 C:\Python. 파이썬을 실행하는 동안 알고 싶다면 다음을 수행하십시오.

import sys
print(sys.prefix)

1
안녕하십니까, '기본 설치'에 대한 효과적인 답변에 감사드립니다. 링크를 통하지 않고 빠르게 이해하는 관점에서 효과적입니다. 정말 감사합니다 :)하지만 내 (1) 질문에 대해서는 아래 명령 및 출력 스 니펫을 참조하십시오. >>> import os >>> print os.environ [ 'PYTHONPATH'] Traceback (가장 최근 호출) : File " <콘솔> ", 라인 1의 <모듈> 파일"C : \ Python25 \ LIB \ os.py "라인 (435)에서 의 getItem 복귀 self.data [key.upper ()] KeyError를 'PYTHONPATH'>>> print os.environ.get ( 'PYTHONPATH') 없음 >>> // PLZ 계속 ... //
Amit Yadav

첫 번째 방법으로 스크립트는 예외를 발생시키는 반면 두 번째 방법은 없음을 제공합니다. 따라서 의미있는 가치를 얻는 방법이 있습니까? 아니면 내가 잘못하고 있습니까 ??? 완화하십시오.
Amit Yadav

7
os.environ은 사전입니다. 사전에없는 키에 액세스하려고하면 KeyError가 발생합니다. get 메소드는 키가 존재하지 않을 때 None을 리턴합니다. PYTHONPATH가 설정되어 있습니까? 존재한다고 보장되는 PATH와 같은 변수를 사용해 볼 수 있습니까? 의미있는 값을 반환합니까?
Rod

2
PYTHONPATH는 Python 외부에서 Python (sys.path)에 새 검색 경로를 추가하는 데 사용됩니다. docs.python.org/using/cmdline.html#environment-variables
Rod

11
.get()기본값을 지정할 수도 있습니다.
Gringo Suave

243

키가 있는지 확인하려면 ( 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')?
endolith

11
@endolith 그들은 다른 일을한다. 첫 번째는 True 또는 False를 반환하고 두 번째는 값, 아마도 None을 반환합니다.
Trenton

1
@endolith, 올바른 질문은 "HOME" in os.environvs os.environ.get('HOME') is None입니다. 먼저 알 수 있듯이 작업하기가 훨씬 더 읽기 쉽고 편안합니다.
Konstantin Sekeresh

59

원래 질문 (첫 번째 부분)은 "Python에서 환경 변수를 확인하는 방법"이었습니다.

$ FOO가 설정되어 있는지 확인하는 방법은 다음과 같습니다.

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

66
os.environ의 "FOO"
ealfonso

4
더 빨리 시도 할 수 있습니다. env vars의 경우는 'try'에 가장 적합합니다 : stackoverflow.com/a/1835844/187769
RandomInsano

13
@RandomInsano 더 빠름 = / = 더 좋습니다. 이 코드는 "if 'FOO' not in os.environ: ..."블록 보다 읽기 어려워 보입니다
Dangercrow

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
아니요,이 답변은 실제로 기존 답변 위에 아무 것도 추가하지 않습니다
Bart

1
이것은 제거되어야하며 다른 답변과 중복됩니다. str.format그냥 멋진 추가입니다.
connectyourcharger

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

18


Django / Flask와 같은 웹 프레임 워크를 사용하여 프로덕션 웹 애플리케이션 코드에서 코드를 사용 하려는 경우 envparse 와 같은 프로젝트 를 사용하여 값을 정의 된 유형으로 읽을 수 있습니다.

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

훌륭한 도서관도 많이 있습니다. 예를 들어 Envs 를 사용하면 rad 인 환경 변수에서 객체를 구문 분석 할 수 있습니다. 예를 들면 다음과 같습니다.

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')

파이썬 라이브러리에 대한 자세한 내용은 여기를 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.