소개
파이썬에서 Matplotlib를 사용하여 plots를 생성할 때, 특히 원격 서버나 headless 시스템에서 작업할 경우 'RuntimeError: Invalid DISPLAY variable' 오류가 발생할 수 있습니다. 이 오류는 보통 그래픽 디스플레이 서버가 없거나 DISPLAY 환경 변수가 적절하게 설정되지 않았을 때 발생합니다. 이 블로그 글에서는 이러한 에러의 원인과 해결 방법에 대해 알아보겠습니다.
에러 발생 예시 코드
먼저, 이 오류가 발생할 만한 기본적인 예시 코드를 살펴보겠습니다.
import matplotlib.pyplot as plt
import numpy as np
# 데이터 생성
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 플롯 생성
plt.plot(x, y)
plt.title('Sine Wave')
plt.show()
에러 해결 방법
1. 백엔드 설정 변경하기
Matplotlib에서 사용하는 그래픽 백엔드를 변경하여 디스플레이 없이도 플롯을 생성할 수 있습니다. 가장 일반적으로 사용되는 옵션은 'Agg' 백엔드입니다.
import matplotlib
matplotlib.use('Agg') # 'Agg' 백엔드로 설정
import matplotlib.pyplot as plt
import numpy as np
# 데이터 생성
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 플롯 생성
plt.plot(x, y)
plt.title('Sine Wave')
plt.savefig('sine_wave.png') # 플롯을 PNG 파일로 저장
2. DISPLAY 환경 변수 점검
만약 여전히 문제가 발생한다면, DISPLAY 환경 변수가 잘못 설정되어 있을 수 있습니다. 아래와 같이 해당 변수를 설정해주는 방법이 있습니다.
export DISPLAY=:0
이 명령어는 UNIX/Linux 시스템에서 사용할 수 있으며, DISPLAY 변수를 수정하여 그래픽 디스플레이를 활성화할 수 있습니다. 원격 환경에서는 주의가 필요합니다.
마무리
이 블로그 글에서는 Matplotlib 사용 시 발생할 수 있는 'RuntimeError: Invalid DISPLAY variable' 오류에 대한 간단한 해결 방법을 소개했습니다. 백엔드 설정을 'Agg'로 변경하거나 DISPLAY 환경 변수를 점검함으로써 이 문제를 손쉽게 해결할 수 있습니다. 그래프를 그릴 때 불필요한 오류에 부딪히지 않도록, 항상 사전 설정을 확인하는 것이 좋습니다.