AWS EC2 - Streamlit 대시보드에 한글 출력하기 (한글 깨짐)

반응형

이 글은 리눅스 한글 폰트가 설치되어있다는 가정하에 진행합니다.

아래의 포스팅으로 이동하면 한글 폰트를 설치하는 절차가 기재되어있습니다.

https://luvris2.tistory.com/118

 

리눅스 - 한글 폰트 설치하기

폰트 관리 유틸리티 설치 sudo yum install fontconfig 네이버 나눔 폰트 다운로드 후 압출 풀기 진행 curl -o nanumfont.zip http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip sudo unzip..

luvris2.tistory.com


리눅스(linux) 운영체제에서 matplotlib 한글 사용하기

한글폰트 유무 확인

  • fontconfig 를 이용하여 사용할 한글 폰트 확인
  • 저는 나눔고딕체를 사용할 예정이며, 리눅스 폰트 폴더에 설치해둔 상태입니다.
  • 터미널에서 fc-list 명령어 실행
    • 설치된 한글 폰트의 이름 확인
fc-list


한글폰트 설정

  • python을 입력하여 아래의 코드를 한줄한줄 쳐서 확인해봅니다.
  • 파이썬의 버전과 설치 위치, 캐시 정보가 담긴 폴더의 이름을 알기 위함입니다.
  • 터미널
python
  • python 에디터
import matplotlib
print(matplotlib.__version__) # matplotlib 버전확인
print(matplotlib.__file__) # 설치 폴더 경로 확인
print(matplotlib.get_cachedir()) # 캐시 폴더 경로 확인


matplotlib에 한글 폰트 추가

  • 위에서 확인한 자신의 설치 폴더 경로에 맞게 폰트를 복사해줍니다.
  • 그 후 matplotlib의 폰트 캐시를 삭제합니다. 이는 새로 설치한 폰트를 업데이트해주는 역할을 합니다.
  • 저는 폰트 폴더에 모든 파일을 복사해서 넣어주었습니다.
  • 터미널
#sudo cp -r /usr/share/fonts/truetype/nanum/Nanum* 아까 확인한 설치 폴더 위치+mpl-data/fonts/ttf/
sudo cp -r /usr/share/fonts/* /home/ec2-user/anaconda3/envs/streamlit3.7/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/
rm -rf /home/ec2-user/.cache/matplotlib/*

matplotlib에 한글 폰트 확인

  • python을 입력하여 아래의 코드를 한줄한줄 쳐서 확인해봅니다.
  • 이는 matplotlib에 추가한 한글 폰트가 정상적으로 추가되었는지 확인하기 위함입니다.
  • 코드 입력시 리스트가 보인다면 성공적으로 한글 폰트가 추가된 것입니다.
  • 터미널
python
  • python 에디터
import matplotlib
import matplotlib.font_manager

# 폰트 전체 리스트 확인
[i.fname for i in matplotlib.font_manager.fontManager.ttflist]

# 나눔 폰트 설치 확인
[f.name for f in matplotlib.font_manager.fontManager.ttflist if 'Nanum' in f.name]

streamlit(스트림릿)의 대시보드에서 한글 폰트 사용하기

한글 폰트 설정하기

  • matplotlib의 폰트를 지정해서 한글을 출력하는 작업을 진행해야합니다.
  • 한글 폰트를 matplotlib의 출력 폰트로 지정해줍니다.
  • 리눅스의 한글 폰트 설치는 완료하였으니 이제 한글을 matplotlib의 출력 폰트로 지정하기 위해 개발툴로 이동합니다.

IDE - 코딩 (Visual Studio Code 등)

  • streamlit을 실행하는 파일에서 코딩을 진행합니다.
  • 아래의 코드를 소스 파일 최상단에 배치하여 설치한 글씨체의 이름을 입력해주세요.
    • 'family' 의 값을 위에서 설치한 폰트의 이름으로 입력
      • 설명 : 운영체제가 리눅스 일 경우, matplotlib의 폰트를 나눔고딕으로 변경
# Streamlit File *.py
import platform
from matplotlib import font_manager, rc
plt.rcParams['axes.unicode_minus'] = False
if platform.system() == 'Linux':
    rc('font', family='NanumGothic')

확인

  • streamlit 서버에서 정상적으로 한글이 출력되는 모습 확인

반응형