본문 바로가기
프로그래밍/AI

M1 맥북에서 Zulu 를 이용한 konlpy 환경 구성하기

by K-인사이터 2023. 8. 13.
반응형

안녕하세요 오늘도 여러분의 삶을 풍요롭게할 K-IN 입니다. 

 

이번 시간에는 맥북에서 konlpy 구성 시 JDK 에러 문제가 발생하는 케이스를 완전해결해보도록 하겠습니다.

 

konlpy 설치 방법 

 

konlpy 설치는 매우 간단합니다. 

python 3.9 버전을 기준으로 아래의 명령어를 실행하면 설치가 완료됩니다. 

pip install konlpy
# 또는
python3 -m pip install konlpy

 

만약 버전을 선택하거나 윈도우 버전에서 설치하고자 한다면 아래의 웹사이트를 참조해주세요. 

https://konlpy.org/ko/stable/install/#id1

 

설치하기 — KoNLPy 0.6.0 documentation

우분투 Supported: Xenial(16.04.3 LTS), Bionic(18.04.3 LTS), Disco(19.04), Eoan(19.10) Install dependencies # Install Java 1.8 or up $ sudo apt-get install g++ openjdk-8-jdk python3-dev python3-pip curl Install KoNLPy $ python3 -m pip install --upgrade p

konlpy.org

 

konlpy 설치 시 나타날 수 있는 문제점 총정리 

konlpy 설치 과정에서는 문제가 발생하지 않습니다. 

그러나 이를 여러분의 jupyter notebook 과 같은 환경에서 테스트 코드를 실행하는 순간 문제는 발생합니다. 

발생할 수 있는 오류는 다음과 같습니다. 

  1. (OSError: [Errno 0] JVM DLL not found: /Library/Java/JavaVirtualMachines/zulu-15.jdk/Contents/Home/lib/libjli.dylib)
  2. Attempt to protect stack guard pages failed

우선 여러분이 가장 먼저 만나게될 1번 문제의 해결책부터 설명하겠습니다. 

 

konlpy 의 JVM DLL not found 문제 해결 

해당 문제는 konlpy 와 JDK 간의 호환 충돌 문제입니다. Oracle JDK 같은 경우는 라이선스 이슈로 인해 OpenJDK 를 사용합니다. 

그런데 여러분 Zulu 라는 프로젝트도 OpenJDK 와 동일한 역할을 합니다. 

 

JVM DLL not found 문제를 Zulu 를 통해서 해결해보겠습니다. 

우선 다양한 버전의 zulu 를 설치하기 위해 아래의 명령어를 통해 zulu 탭을 활성화시킵니다. 

 

brew tap mdogan/zulu

 

 

이제 Zulu15를 설치하고 정상적으로 설치되어 있는지 확인해보겠습니다. 

brew install zulu-jdk15

위의 명령어를 통해 설치 후 java_home 명령어를 통해 설치되어 있는 JDK 의 목록을 모두 나열하여 설치되어 있는지 확인할 수 있습니다. 

/usr/libexec/java_home -V

또한, /Library/Java/JavaVirtualMachines 경로에 접근하여 설치된 내역을 확인할 수 있습니다. 

ls -al /Library/Java/JavaVirtualMachines

설치가 정상적으로 이루어졌다면 ~/.zshrc 환경 프로필에 아래와 같은 함수를 작성해줍니다. 앞으로 여러분이 편리하게 jdk 버전을 오갈 수 있도록 도움을 줄 것입니다. 

# file: ~/.zshrc 
jdk() {
    version=$1
    export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
    java -version
 }

함수의 사용법은 간단합니다. jdk 뒤에 버전을 작성해주면됩니다. 

아래는 OpenJDK 1.8 로 전환한 모습입니다. 

-> % jdk 1.8    
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.292-b10, mixed mode)

또한, 아래는 Zulu 15.0 으로 전환한 모습니다. 

-> % jdk 15.0.10  
openjdk version "15.0.10" 2023-01-17
OpenJDK Runtime Environment Zulu15.46+17-CA (build 15.0.10+5-MTS)
OpenJDK 64-Bit Server VM Zulu15.46+17-CA (build 15.0.10+5-MTS, mixed mode)

Konlpy 의 Attempt to protect stack guard pages failed 경고 해결 방법

소제목과 같은 에러가 발생하였다면 Zulu 버전 문제일 가능성이 있습니다. 

Zulu 버전을 15 에서 17로 변경하여봅니다. 

변경 방법은 터미널에서 변경의 경우 바로 위에서 언급한 Jdk 함수를 이용한 변경 방법을 참고해주시면됩니다. 

또한, Jupyter Notebook 환경이라면 바로 아래의 글을 참고하시면됩니다. 

 

설치한 JDK 를 Jupyter Notebook 에 적용하는 방법

이제 마지막입니다. 여러분이 실행하는 Jupyter Notebook 의 커널에는 환경변수정보(JAVA_HOME 등)의 정보가 없습니다.

즉, 시스템 default JDK 를 가리키게 됩니다. 이래서는 우리가 설치한 Zulu 15.0 을 사용할 수 없습니다. 

 

하지만, 아래의 팁을 이용하면 간편하게 JAVA_HOME 환경 설정을 하고 konlpy 를 실행할 수 있습니다. 

Notebook 에서 Cell 을 하나 생성하고 아래의 코드를 붙여넣고 실행을 합니다. 

 

만약 버전이 15 -> 17로 변경되었다고 한다면 그 JDK 경로를 JAVA_HOME 변수에 붙여넣어주면됩니다. 

!/usr/libexec/java_home -V
!java -version
%env JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-15.jdk/Contents/Home

아래의 그림을 볼까요? 

konlpy 가 정상적으로 동작하고 형태소 분석이 아무런 에러 없이 완료되었음을 확인했습니다. 

konlpy 형태소 분석 간단 코드 

konlpy 가 정상적으로 동작하는지 체크하기 위한 가장 간단한 방법은 아래의 코드를 실행하는 것입니다. 

아래의 코드를 복사하여 붙여넣고 실행하여 정상적으로 동작하는지 체크해봅니다. 

from konlpy.tag import Okt
okt = Okt()
text = "형태소분석으로 문장을 분해해보자"
print(okt.morphs(text, stem=True))

 

결론

오늘은 konlpy 를 설치하는 과정에서 발생하는 각종 문제들을 정리하였습니다. 

OpenJDK, Zulue, Oracle JDK 등등 여러분을 혼동하게 만드는 많은 JDK 들과 버전들이 있습니다. 

이 블로그의 내용을 따라하신다면 아주 간편하고 빠르게 여러분이 학습/업무할 수 있는 환경을 세팅할 수 있습니다. 

 

오늘도 여러분의 편안한 IT 삶을 위해 노력하는 K-IN 이었습니다.

이상입니다.

K-IN 올림 

반응형