[파이썬] subprocess 환경 변수와 함께 `subprocess` 사용하기

파이썬에서 subprocess 모듈은 외부 프로세스를 실행하고 상호작용할 수 있는 강력한 도구입니다. 이 모듈은 운영 체제의 명령어를 실행하고 결과를 가져오거나 입력을 전달할 수 있습니다. 그러나 때로는 프로세스가 실행될 때 특정 환경 변수가 필요한 경우가 있습니다.

subprocess 모듈을 사용하여 외부 프로세스를 실행하는 방법을 보여주기 전에, 먼저 환경 변수의 개념을 살펴보겠습니다. 환경 변수는 운영 체제에서 사용되는 변수로, 시스템 전체에서 공유되는 값이나 설정입니다. 각 환경 변수는 이름과 해당 값을 가지며, 운영 체제에 의해 읽힐 수 있습니다.

파이썬에서 운영 체제의 환경 변수에 접근하기 위해 os 모듈을 사용할 수 있습니다. os.environ은 현재 환경 변수의 딕셔너리를 제공하므로, 환경 변수의 값을 찾아볼 수 있습니다.

이제 환경 변수와 함께 subprocess 모듈을 사용하여 외부 프로세스를 실행하는 방법을 알아보겠습니다.

예제 코드

import subprocess
import os

# 환경 변수 설정
os.environ['MY_VARIABLE'] = 'Hello, World!'

# 외부 프로세스 실행
process = subprocess.Popen(['echo', '$MY_VARIABLE'], stdout=subprocess.PIPE, shell=True)

# 결과 가져오기
output, error = process.communicate()

# 결과 출력
print(f"Output: {output.decode().strip()}")

위의 코드에서는 os.environ['MY_VARIABLE']을 사용하여 MY_VARIABLE이라는 이름을 가진 환경 변수를 설정합니다. 그런 다음 subprocess.Popen을 사용하여 외부 프로세스인 echo $MY_VARIABLE을 실행합니다. shell=True인자는 셸 명령을 사용할 수 있도록 합니다.

communicate 메소드를 사용하여 외부 프로세스의 결과와 에러를 가져옵니다. output 변수에 저장된 결과를 출력하고 있습니다.

이 예제에서는 "Hello, World!"라는 값이 출력될 것입니다. $MY_VARIABLE은 환경 변수의 값을 호출하기 위한 특별한 구문으로 인식됩니다. 이러한 방식으로 subprocess 모듈을 활용하면 외부 프로세스를 실행하면서 환경 변수를 사용할 수 있습니다.

환경 변수를 사용하는 것은 보안 등의 이유로 신중하게 사용해야 합니다. 환경 변수를 사용해야 하는 경우에는 적절한 범위에서만 사용하도록 주의해야 합니다.

이처럼 환경 변수와 함께 subprocess 모듈을 사용하여 외부 프로세스를 실행할 수 있습니다. subprocess 모듈은 파이썬에서 강력하게 활용될 수 있는 도구이며, 환경 변수를 이용하면 특정 설정이나 값을 외부 프로세스 실행에 적용할 수 있습니다. 환경 변수를 조작하는데 주의하여 사용하고, 용도에 따라 안전하게 활용해야 합니다.