파이썬 스크립트에서 일부 환경 변수를 설정해야하고 파이썬 (셸 스크립트)에서 호출되는 다른 모든 스크립트가 환경 변수 설정을 확인하는 하위 프로세스가됩니다. 값은 숫자입니다.파이썬에서 환경 변수를 설정하는 방법
내가 os.environ["DEBUSSY"] = 1
일 경우 1
은 문자열이어야한다고 말하면서 불평합니다. 파이썬에서 환경 변수를 읽는 방법을 알고 싶습니다 (스크립트의 뒷부분에서).
파이썬 스크립트에서 일부 환경 변수를 설정해야하고 파이썬 (셸 스크립트)에서 호출되는 다른 모든 스크립트가 환경 변수 설정을 확인하는 하위 프로세스가됩니다. 값은 숫자입니다.파이썬에서 환경 변수를 설정하는 방법
내가 os.environ["DEBUSSY"] = 1
일 경우 1
은 문자열이어야한다고 말하면서 불평합니다. 파이썬에서 환경 변수를 읽는 방법을 알고 싶습니다 (스크립트의 뒷부분에서).
환경 변수는 문자열, 그래서 문자열 1
에 변수 DEBUSSY
을 설정
os.environ["DEBUSSY"] = "1"
사용해야합니다. 나중에이 변수에 액세스하려면
하위 프로세스는 자동으로 상위 프로세스의 환경을 상속받습니다. 사용자가 별도로 조치하지 않아도됩니다.
약 os.environ["DEBUSSY"] = '1'
? 환경 변수는 항상 문자열입니다. 내가 os.environ [ "DEBUSSY"] = 1를 할 경우
, 그것은 1은 문자열이어야한다는 불평.
그런 다음 나는 또한 내가 에게로 설정하면 (스크립트의 이후 일부) 파이썬에서 환경 변수를 읽는 방법을 알고 싶어
os.environ["DEBUSSY"] = "1"
을한다.
그냥
some_value = os.environ["DEBUSSY"]
당신은 코드 견고성에 대한 몇 가지 추가적인 측면을 고려해야 할 수도 같이 os.environ["DEBUSSY"]
를 사용;
, 당신이 가능하게
os.environ.get('DEBUSSY', 'Not Set')
대체 '를 시도해야, 오류를 방지하는 것을 고려 검색을 위해 다음
os.environ['DEBUSSY'] = str(myintvariable)
시도 -1 '을'설정하지 않음 '
이렇게 모두 넣으십시오.
myintvariable = 1
os.environ['DEBUSSY'] = str(myintvariable)
strauss = int(os.environ.get('STRAUSS', '-1'))
# NB KeyError <=> strauss = os.environ['STRAUSS']
debussy = int(os.environ.get('DEBUSSY', '-1'))
print "%s %u, %s %u" % ('Strauss', strauss, 'Debussy', debussy)
Linux 컴퓨터에서 변수를 설정하는 방법은 무엇입니까? 모든 플랫폼? –
os.environ
사전을 사용하여 환경 변수에 액세스 할 수 있습니다.
이제는 os.system
을 사용하여 환경 변수를 설정하는 배치 파일을 실행하려고하면 (** .bat * 파일의 SET 명령을 사용하여) 사용자 환경 변수를 설정하지 않을 것입니다. python 환경 (그러나 os.system
함수로 작성된 하위 프로세스의 경우).실제로 파이썬 환경에서 설정 한 변수를 얻으려면이 스크립트를 사용합니다.
import re
import system
import os
def setEnvBat(batFilePath, verbose = False):
SetEnvPattern = re.compile("set (\w+)(?:=)(.*)$", re.MULTILINE)
SetEnvFile = open(batFilePath, "r")
SetEnvText = SetEnvFile.read()
SetEnvMatchList = re.findall(SetEnvPattern, SetEnvText)
for SetEnvMatch in SetEnvMatchList:
VarName=SetEnvMatch[0]
VarValue=SetEnvMatch[1]
if verbose:
print "%s=%s"%(VarName,VarValue)
os.environ[VarName]=VarValue
환경 변수에 문자열 값을 지정해야합니다.
os.environ["DEBUSSY"] = "1"
당신은 그것을 변화 없음 것, 단지 만이 할당 된 현재 프로세스에 대한 효과적 일 것
print os.environ["DEBUSSY"]
이 변경을 사용하여 읽거나 환경 변수를 인쇄하려면 가치. 하위 프로세스는 자동으로 상위 프로세스의 환경을 상속합니다.
파이썬 사전 등"이 변경 사항은 할당 된 현재 프로세스에만 유효하며 값을 영구적으로 변경하지 않습니다. "이것은 환경 변수 설정의 범위에 관한 질문에 대답했습니다 – spitfiredd
파이썬 셸을 종료하면 이전에 설정 한 os environmet도 없어졌습니다. – MeadowMuffins
os.environ
하게 동작하여 모든 공통 사전 작업이 수행 될 수있다. 나는 최근 문제로 실행하고 파악했다
>>> import os
>>> os.environ.has_key('HOME') # Check an existing env. variable
True
>>> os.environ.has_key('FOO') # Check a non existing variable
False
>>> os.environ['FOO'] = '1' # Set a new env. variable (String value)
>>> os.environ.has_key('FOO')
True
>>> os.environ.get('FOO') # Retrieve the value
'1'
당신이 환경을 업데이트하는 다른 스크립트가있는 경우 : 키가있는 경우 다른 답변에서 언급 한 get
및 set
운영에 더하여, 우리는 간단히 확인할 수 있습니다 파이썬 스크립트가 실행되는 동안 os.environ
을 다시 호출하면 은의 최신 값을 반영하지 않습니다. docs에서
발췌 :이 매핑은 os 모듈을 가져올 처음 캡처
, 일반적으로 파이썬 시작하는 동안 처리 site.py.의 일환으로 이 시간 이후 변경된 환경에 대한 의 변경 사항은 os.environ을 직접 수정하여 변경된 사항을 제외하고는 os.environ에 반영되지 않습니다. 모든 환경 변수를 저장
os.environ.data
는 모든 환경 값을 포함하는 딕셔너리 객체입니다 :
>>> type(os.environ.data)
<type 'dict'>
당신이 환경 변수 (변수를 제거/수정/추가), 좋은 플레이 연습은 함수 완성시 이전 상태를 복원하는 것입니다.
환경 변수를 복원하려면 컨텍스트 관리자 설명이 question에 필요합니다.
클래식 사용 : 일부 플랫폼에서
with modified_environ(DEBUSSY="1"):
call_my_function()
은 os.environ을 수정 실제로 현재 프로세스 또는 하위 프로세스 중 시스템 환경을 수정하지 않습니다. 자세한 정보는 다음 문서를 참조하십시오 : https://docs.python.org/2/library/os.html#os.environ – Evan
@Evan 유닉스의 역사적 변종은'putenv()'를 지원하지 않을 수도 있습니다. Unixen에게는 어쨌든 할 수있는 일이 없습니다. AIX와 HPUX의 이전 버전조차도 지원 했었습니다. 오늘날 누군가 그것을 실제로 지원하지 않는 컴퓨터를 찾을 수 있다면, 나는 그 컴퓨터에서 파이썬을 돌릴 수 있을지에 대해 의문의 여지가있다. :) –
**주의 : ** 환경을 변경하면 os로 시작하는 하위 프로세스가 영향을받습니다.즉, system(), popen() 또는 fork() 및 execv(). * 다른 말로하면이 방법은 프로그램 실행 방식을 수정하지 않고 프로그램의 자식 실행 방식 만 수정합니다. 사실, 프로그램은 환경 변수를 설정하고 다시 읽을 수 있지만 그 환경 변수는 자식을 위해 구성됩니다. 또한 [현재 프로세스 환경 변경] (http://stackoverflow.com/q/1178094/5025060)을 참조하십시오. 지금까지 파이썬 스크립트가 부모 환경을 수정하는 방법을 찾지 못했습니다. –