올해 상반기 프로젝트를 하면서 챗봇을 사용할 일이 있었고, 한국어 자연어 처리를 위해 KoNLPY 를 사용하였다.
처음 KoNLPy를 사용했을 때는 윈도우 환경에서 사용을 했고, 문제가 발생하지 않았다.
하지만 프로젝트 도중 사용하던 그램에 문제가 생겨 M2 맥북을 새로 사고 처음부터 환경설정을 하는데...
KoNLPy에서 문제가 발생하기 시작했다.
KoNLPy에서 맥북에 설치된 jvm을 찾지 못했다.
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/jpype/_jvmfinder.py", line 212, in get_jvm_path
raise JVMNotFoundException("No JVM shared library file ({0}) "
[JVM Not Found Exception 발생]
구글링을 하며 애플 실리콘에서 KoNLPy JVM Not Found를 해결하기 위한 다양한 글들을 읽어보았고 시도해보았지만 해결할 수 없었다.
- 특정 버전의 jdk를 설치해라
- 특정 버전의 python을 설치해라
- 자바 환경 변수를 어떻게 수정해라
- 등등
그러다 우연히 본 윈도우에서의 해결법에서 힌트를 얻어 시도를 해보았고, 다행이 해결할 수 있었다.
해결법은 다음과 같다
환경 : MacBook Pro 13 M2 / openjdk-20.0.1 / python 3.10
(1) jdk 경로로 들어가 libjli.dylib 의 위치를 찾는다.
필자의 경우엔 Library/Java/JavaVirtualMachines/openjdk-20.0.1/Contents/Home/lib/libjli.dylib 위치에 존재하였다.
(2) KoNLPy 모듈 속 jvm.py 파일의 jvmpath 경로를 수정한다.
KoNLPy의 설치 경로를 찾아 확인해보면 아래의 경로에 jvm.py 파일이 존재한다.
/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/konlpy/jvm.py
jvm.py 을 열어보면 jvmpath 이라는 변수가 존재할 것이다. 아마 jvmpath 를 보면 아래와 같이 되어있을 것이다.
jvmpath = jvmpath or jpype.getDefaultJVMPath()
위의 jvm Not Found Exception은 KoNLPy 모듈의 jvm.py 에서 jvm의 경로를 찾지 못해 발생하는 문제로 생각되었다.
그러므로 jvmpath에 정적으로 위에서 찾은 libjli.dylib 의 경로를 넣어준다.
jvmpath = '/Users/<본인사용자명>/Library/Java/JavaVirtualMachines/openjdk-20.0.1/Contents/Home/lib/libjli.dylib'
(3) ~/.bash_profile 과 ~/.zshrc 파일에서 자바 경로 수정
export JAVA_HOME=/Users/<본인사용자명>/Library/Java/JavaVirtualMachines/openjdk-20.0.1/Contents/Home/lib/libjli.dylib
export PATH=${PATH}:$JAVA_HOME/bin
수정 이후 source 명령어로 수정 값을 적용해주는 것도 잊지 말자!