본문 바로가기
기타/파이썬

m1 맥에 konlpy를 설치해보자!

by 수완동날다람쥐 2021. 4. 28.

m1 맥 유저로 살아간다는 건 피곤한 일이다.. 하지만 200만원 주고 노트북을 샀으니, 열심히 살아가야지..

이번에는 m1 맥에 konlpy를 설치해보도록 하자.

아래 블로그 글을 참고해서 설치했다.

 

M1 Mac에서의 JVM/JDK 문제 - konlpy

Ask questionsM1 Mac에서의 JVM/JDK 문제 M1 칩이 탑재된 맥에서 java 환경변수가 설정되어 있지 않거나, JDK가 설치되어 있고 환경변수가 설정되어 있더라도 JDK에 따라 konlpy를 사용할 때 다음과 같은 오류

www.gitmemory.com

우선 jdk를 설치해줘야 한다. 요즘 m1전용 jdk가 많이들 나왔다지만, 그 중에서도 Zulu Open JDK의 arm64용 15버전만 konlpy가 제대로 돌아간다고 한다.. 하핳..

 

 

Java Download | Java 8, Java 11, Java 13 - Linux, Windows & macOS

Download Java Builds of OpenJDK 8, 11, 13 & 15. Azul Zulu Builds of OpenJDK runs on Linux, Windows, macOS & Solaris on X86, Arm, SPARC & PPC

www.azul.com

위 페이지에서 다운받고 설치하자.

설치완료 후

% open ./.zshrc

를 입력해 zshrc를 열고

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

이케 자바 경로를 설정해주자

이렇게 하면 konlpy 설치가 완료되는 줄 알았는데!!

from konlpy.tag import Okt
okt = Okt()


Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/gidaehyeon/nlp_practice/venv/lib/python3.8/site-packages/konlpy/tag/_okt.py", line 91, in __init__
    jvm.init_jvm(jvmpath, max_heap_size)
  File "/Users/gidaehyeon/nlp_practice/venv/lib/python3.8/site-packages/konlpy/jvm.py", line 64, in init_jvm
    jpype.startJVM(jvmpath, '-Djava.class.path=%s' % classpath,
TypeError: startJVM() got an unexpected keyword argument 'convertStrings'

요런 에러가 발생한다. 후우..

 

Konlpy TypeError: startJVM() got an unexpected keyword argument 'convertStrings'

* MAC 기준 Konlpy를 쓰려고 하는데 TypeError: startJVM() got an unexpected keyword argument 'convertStrings' 에러가 뜬다. https://nogadaworks.tistory.com/193 블로그에서 일련의 과정을 따라서 내려오면..

zereight.tistory.com

하지만!! 위 블로그에서 lib/python3.8/site-packages/konlpy/jvm.py 의 맨 아래부분에서 convertStrings 관련한 부분을 주석처리해주면 된다!! 고 했다. 아래처럼

    # NOTE: Temporary patch for Issue #76. Erase when possible.
    if sys.platform == 'darwin'\
            and jvmpath.find('1.8.0') > 0\
            and jvmpath.endswith('libjvm.dylib'):
        jvmpath = '%s/lib/jli/libjli.dylib' % jvmpath.split('/lib/')[0]

    if jvmpath:
        jpype.startJVM(jvmpath, '-Djava.class.path=%s' % classpath,
                                '-Dfile.encoding=UTF8',
                                '-ea', '-Xmx{}m'.format(max_heap_size),
                                #convertStrings=True
                                )
    else:
        raise ValueError("Please specify the JVM path.")

어림도 없지

from konlpy.tag import Okt
okt = Okt()

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/gidaehyeon/nlp_practice/venv/lib/python3.8/site-packages/konlpy/tag/_okt.py", line 91, in __init__
    jvm.init_jvm(jvmpath, max_heap_size)
  File "/Users/gidaehyeon/nlp_practice/venv/lib/python3.8/site-packages/konlpy/jvm.py", line 64, in init_jvm
    jpype.startJVM(jvmpath, '-Djava.class.path=%s' % classpath,
  File "/Users/gidaehyeon/nlp_practice/venv/lib/python3.8/site-packages/jpype/_core.py", line 58, in startJVM
    _jpype.startup(jvm, tuple(args), True)
RuntimeError: Unable to load DLL [/Library/Java/JavaVirtualMachines/zulu-15.jdk/Contents/Home/lib/server/libjvm.dylib], error = dlopen(/Library/Java/JavaVirtualMachines/zulu-15.jdk/Contents/Home/lib/server/libjvm.dylib, 9): no suitable image found.  Did find:
	/Library/Java/JavaVirtualMachines/zulu-15.jdk/Contents/Home/lib/server/libjvm.dylib: mach-o, but wrong architecture
	/Library/Java/JavaVirtualMachines/zulu-15.jdk/Contents/Home/lib/server/libjvm.dylib: mach-o, but wrong architecture at native/common/include/jp_platform_linux.h:45

또 새로운 에러가 발생했다.

 

startJVM 호출 실패 · Issue #24 · konlpy/konlpy

jpype.startJVM 호출이 안됩니다. 실행환경 Ubuntu 12.04, x64 OpenJDK 1.7 Python 2.7 패키지 설치 $ pip install JPype1 $ pip install konlpy Python console >>> import jpype >>> p = jpype.getDefaultJVM...

github.com

위 깃헙 이슈글을 살펴보고 에러를 해결해보고자 했다. 근데, 내가 받은 Jpype1의 setup.py에는 java_home 변수가 없었다.

근데 혹시나 해서 파이썬 3.9, m1 버전 파이썬에서 konlpy를 실행했더니

from konlpy.tag import Okt
okt = Okt()
[0.006s][warning][os,thread] Attempt to protect stack guard pages failed (0x00000001698d0000-0x00000001698dc000).
[0.006s][warning][os,thread] Attempt to deallocate stack guard pages failed.

경고메시지가 뜨긴 했으나 어쨌든 됐다...

알다가도 모를 일이다.. 어쨌든 설치 완료@

댓글