소개
Matplotlib을 사용할 때 "RuntimeError: No display found. Using non-interactive backend." 오류가 발생하는 경우가 종종 있습니다. 이 오류는 일반적으로 GUI가 없는 환경에서 matplotlib을 사용할 때 발생합니다. 예를 들어, 리모트 서버나 Docker 컨테이너처럼 X11 display가 없는 환경에서 코드를 실행할 때 전형적으로 나타납니다. 이 글에서는 이 오류의 원인과 해결 방법에 대해 알아보겠습니다.
에러 발생 예시 코드
아래 코드는 "RuntimeError: No display found" 오류를 유발할 수 있는 간단한 예시입니다. GUI를 필요로 하는 matplotlib의 기본 사용법입니다.
import matplotlib.pyplot as plt
# 간단한 그래프 생성
plt.plot([1, 2, 3], [1, 4, 9])
plt.title('Sample Plot')
plt.show() # 이 부분에서 오류 발생 가능
에러 해결 방법
1. 비-인터랙티브 백엔드 설정
첫 번째 해결 방법은 비-인터랙티브 백엔드를 사용하도록 matplotlib을 설정하는 것입니다. 예를 들어, 'Agg' 백엔드를 사용할 수 있습니다. 이 백엔드는 이미지 파일로 저장하는 데 적합합니다.
import matplotlib
matplotlib.use('Agg') # 비-인터랙티브 백엔드 설정
import matplotlib.pyplot as plt
# 간단한 그래프 생성
plt.plot([1, 2, 3], [1, 4, 9])
plt.title('Sample Plot')
plt.savefig('sample_plot.png') # 그래프를 파일로 저장
2. GUI 지원 환경에서 코드 실행하기
만약 GUI가 필요하다면, GUI가 설치된 환경에서 코드를 실행할 수 있도록 설정해야 합니다. 이 경우 다음과 같은 단계를 따릅니다.
- 코드를 실행할 환경에서 X11이 활성화되어 있는지 확인하세요.
- Xvfb와 같은 X 가상 프레임 버퍼를 사용하는 것도 고려해보세요.
마무리
이 블로그 글에서는 matplotlib에서 발생하는 "RuntimeError: No display found. Using non-interactive backend." 오류에 대한 해결 방법을 살펴보았습니다. 비-인터랙티브 백엔드를 사용하거나 GUI가 활성화된 환경에서 코드를 실행함으로써 이러한 문제를 해결할 수 있습니다. 항상 코드를 실행하는 환경을 고려하여 적절한 설정을 유지하는 것이 중요합니다.