Posts M1 맥에서 Konlpy 사용 시 JDK 문제 - JAVA_HOME 환경변수 설정, ARM64 JDK
Post
Cancel

M1 맥에서 Konlpy 사용 시 JDK 문제 - JAVA_HOME 환경변수 설정, ARM64 JDK

개요

본인은 애플 실리콘 M1 칩이 장착된 맥을 사용하고 있다.

그런데 konlpy에서 형태소 분석기를 사용하려고 하니 JAVA_HOME 환경변수를 설정해주라는 에러가 발생했다. Oracle JDK를 설치한 뒤에는 또 아래와 같은 에러가 발생했다.

1
2
3
4
5
6
7
8
9
10
Traceback (most recent call last):
  File "test.py", line 2, in <module>
    okt = Okt()
  File "/opt/homebrew/Caskroom/miniforge/base/envs/NLP-tf/lib/python3.8/site-packages/konlpy/tag/_okt.py", line 91, in __init__
    jvm.init_jvm(jvmpath, max_heap_size)
  File "/opt/homebrew/Caskroom/miniforge/base/envs/NLP-tf/lib/python3.8/site-packages/konlpy/jvm.py", line 64, in init_jvm
    jpype.startJVM(jvmpath, '-Djava.class.path=%s' % classpath,
  File "/opt/homebrew/Caskroom/miniforge/base/envs/NLP-tf/lib/python3.8/site-packages/jpype/_core.py", line 221, in startJVM
    _jpype.startup(jvmpath, tuple(args),
OSError: [Errno 0] JVM DLL not found: /Library/Java/JavaVirtualMachines/jdk-15.0.2.jdk/Contents/Home/lib/libjli.dylib

JAVA_HOME 환경변수는 지정했지만, 이 경로에서 JVM_DLL을 찾지 못했다는 것. 아무래도 Rosetta 2를 이용하는 JDK와는 호환되지 않는 것으로 생각된다.

해결책

검색해보니, ARM 맥을 지원하는 JDK가 있었고, 이를 설치했다.

주의!

16버전이 아닌 15버전 이하를 설치해야 한다!

16버전의 경우에는 설치해도 오류가 발생했다.

설치 이후, 환경 변수를 설정했다.

M1 맥을 사용중인 이상 zsh를 사용중일 것으로 전제했다.

Bash를 사용중이라면 아래 링크를 참고하면 된다.

https://whitepaek.tistory.com/28

터미널을 열고 아래 명령어를 입력한다.

1
% open ./.zshrc

열린 파일 내에 아래 텍스트를 복사해서 붙여넣고, 저장한다.

1
2
3
# JAVA PATH
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-15.jdk/Contents/Home
export PATH=${PATH}:$JAVA_HOME/bin:

아래 명령어를 입력해 저장된 내용을 반영한다.

1
% source ./.zshrc

이후, python을 다시 실행시켜 제대로 작동하는지 테스트해 보았다.

1
2
3
4
5
6
# Test code 
from konlpy.tag import Okt
okt = Okt()
text = "아 나는 역시 밤에 일이 잘된다."

print(okt.morphs(text, stem=True))

실행 결과는 아래와 같다.

Warning이 뜨지만 실행 자체는 잘 되며, 지금까지 실제로 사용해본 바 문제 없이 잘 작동하는 것 같다.

1
2
3
[0.002s][warning][os,thread] Attempt to protect stack guard pages failed (0x000000016d4b0000-0x000000016d4bc000).
[0.002s][warning][os,thread] Attempt to deallocate stack guard pages failed.
['아', '나', '는', '역시', '밤', '에', '일이', '잘', '되다', '.']

Reference

https://github.com/konlpy/konlpy/issues/353 - 본인이 작성한 글

This post is licensed under CC BY 4.0 by the author.

행렬과 벡터

M1 맥에서 Pytorch 설치하기 - M1 Native

Loading comments from Disqus ...