Python에서 Linux 환경 변수를 설정 해제하는 올바른 방법은 무엇입니까?


85

문서에서 :

플랫폼이 unsetenv()기능을 지원하는 경우이 매핑에서 항목을 삭제하여 환경 변수를 설정 해제 할 수 있습니다. unsetenv()os.environ에서 항목이 삭제되고 pop()또는 clear()메서드 중 하나가 호출 될 때 자동으로 호출됩니다 .

그러나 나는의 가용성에 관계없이 작동하는 것을 원합니다 unsetenv(). 사용할 수없는 경우 매핑에서 항목을 삭제하려면 어떻게합니까? os.environ['MYVAR'] = None?


1
unsetenv문서에 따르면 "대부분의 Unix, Windows"에서 작동합니다.
Katriel

음, 잘 모르겠습니다. 나는 $ unset MYVAR명령이 작동 하는 플랫폼에 있습니다
fredley 2010-08-26

답변:


139

다만

del os.environ['MYVAR']

작동해야합니다.


1
결국 문제는 매핑에서 항목을 제거하는 것이 었습니다. unsetenv가 지원되지 않으면 키와 값이 매핑에서 제거되지만 환경에 설정된 상태로 유지됩니다.
Vinay Sajip

1
키가 존재하지 않으면 KeyError가 발생한다고 생각합니다.
rickfoosusa

5
기록을 del os.environ위해 os.unsetenvOSX에 없었을 때 작동했습니다 .
jeremyjjbrown


참고로이 솔루션은 멱 등성이 아닙니다. 즉 MYVAR, 환경에 존재하지 않는 경우 예외가 발생합니다. 포장 할 수는 try:있지만 안타깝습니다.
medley56

9

여전히 매핑 에서 항목을 삭제할 수 있지만 unsetenv()사용할 수없는 경우 환경에서 실제로 변수를 삭제 하지는 않습니다.

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