2021년 7월 기준 konlpy 설치 방법(2022.10 업데이트)

Soo Im·2021년 7월 28일
3
post-thumbnail

2022년 10월 업데이트
1) JDK 16.0.1: 기존 링크에서 다운로드 할 수 없어서 링크를 업데이트했다.
2) JPYPE1 1.2.0: 기존 링크에서 다운로드할 수 없다. 1.1.2로도 작업 가능하니 1.1.2로 진행한다.

🤣 konlpy는 정말 멋져 설치만 빼고

한글 자연어 처리 패키지 konlpy

한글 자연어 처리를 할 때 주로 쓰는 패키지가 konlpy이다. 형태소 단위로 띄어쓰기하는 영어와 달리 우리말은 조사, 어미... 등으로 인해 분해하기가 어렵다. 사람도 구분하기 어려운 단어와 형태소 등을 알아서 분석해주니 정말 고마운 패키지이다.

(참고) 영단어도 분해하고 싶다면

konlpy 내 어떤 클래스의 nouns(명사) 매서드도 영단어는 단어로 분류해주지 않는다(Mecab 클래스는 확인해보지 못했다). konlpy 패키지만으로 영단어도 남기고 싶다면 morphs(형태소) 매서드를 써야한다.

>> Kkma().nouns(u"Hello world")
>> []			# .nouns를 사용하면 영단어는 아예 사라진다.
>> Kkma().nouns(u"Samsung페이")
>> ['Samsung페이']	# 그 대신 영문+한글은 남아있다.
>> Kkma().morphs(u"Hello world")
>> ['Hello', 'world']	# 영단어도 남기고 싶다면 .morphs를 사용해야 한다.

왜 쓰지를 못하니

자연어 분석을 쉽게 만들어주는 패키지이지만 딱 한 가지 어려움이 있다. 바로 파이썬에서 사용하기!
konlpy 내 클래스는 Java 기반이기 때문에 그냥 pip install konlpy설치할 수 없다. 공식 사이트와 많은 블로그가 설치하는 방법을 소개하고 있지만 분명 누군가는 에러가 난다. 그리고 나도 그랬다. 다른 사람이 설치한 걸 그대로 따라하고 싶어도 JPYPE1이나 JDK 버전이 몇 년 사이에 훅훅 바뀌어버려서 따라할 수 조차 없었다. 이미 다 알려진 방법이지만 최신 버전의 설치글도 누군가에게 도움이 될 것이라는 희망을 가지고 현재(2021-07) 기준 나의 설치 방법을 기록해둔다.

📖 2021년 7월 기준 konlpy 설치 방법

한 줄 요약
Anaconda (Python 3.8) + JDK 16.0.1 + JPYPE1 1.2.0 cp38 (or 1.1.2 cp38)

파이썬 3.9를 사용하는데 자꾸 에러가 난다면 파이썬 3.8로 시도하는 것을 추천한다(나는 그냥 아나콘다로 했다). 파이썬 3.9에다가 JDK 16.0, JDK 8u, JPYPE1 1.3.0, JPYPE1 1.1.2 모든 조합을 다 해보았는데 성공한 것이 하나도 없었다 😭 아무리 해도 잘 안 된다면 아래 방법도 한 번 시도해보기를 추천한다.
(참고로 이 방법으로 했을 땐 Visual Studio C++ 를 별도로 설치하지 않아도 되었다.)

STEP 0. 이전에 설치한 Python + JDK + JPYPE1 삭제하기

우선 기존에 설치한 걸 싹 지워야한다.

1) Python

삭제 방법 제어판 > 프로그램 추가/제거 > Python, Python Launcher 둘 다 제거
삭제 확인방법 명령 프롬프트에서 python을 입력하였을 때 python이 실행되지 않는다.

2) JDK

삭제 방법 제어판 > 프로그램 추가/제거 > JDK 제거
삭제 확인방법 명령 프롬프트에서 java --version을 입력하였을 때 정보가 나오지 않는다.

3) JPYPE1

삭제 방법 명령 프롬프트(cmd) > JPYPE 설치파일.whl이 들어있는 폴더로 이동 > pip uninstall JPype1-...whl

STEP 0.5 JAVA 설치

JAVA가 설치되어있지 않은 컴퓨터라면(C:\Program Files\ 경로에 Java 폴더가 없다면 설치가 안 되었을 확률이 높다) 이 링크에서 JAVA를 설치한다. JAVA 8을 사용했다.

STEP 1. Anaconda Python3.8 설치

아나콘다가 핵심인지 3.8이 핵심인지는 잘 모르겠지만 conda install을 한 건 아니라서 파이썬 3.8이 중요한 것 같다. 일단 나는 아나콘다 파이썬 3.8로 진행하였다.

STEP 2. JDK 16.0.1 설치

JDK (Java Devlopment Kit)도 SE16, SE11, SE8 등 버전이 많은데 나는 16.0.1을 설치했다. 이 곳에서 다운받고 실행하여 설치한다(Oracle 로그인 필요). 그런데 16, 11에는 window 32(x86) 버전이 없어서 window 32라면 8을 설치해야 할 것이다.
JDK 16.0.1을 설치하면 C:\Program Files\Java 경로 밑에 \jdk-16.0.1 폴더가 추가되었을 것이다. 이게 설치되어야 다음 STEP3로 진행할 수 있다.

x32, x64는 Window 버전 기준
참고로 어떤 게시글에서 'window 버전이 아니라 파이썬 버전에 맞추어서 해야한다'는 설명이 있었는데, 그 방법을 따라서 window 32로 시도해보았지만 JPYPE1 설치 단계에서 실패했다. 일반적으로 확인하는 window 버전에 따라서 32, 64를 설치하면 되는 듯 하다.

STEP 3. JAVA_HOME 환경변수 설정

환경 변수 > 시스템 변수(사용자 변수가 아님!) > 새로 만들기 > 변수 이름: JAVA_HOME, 변수 값: jvm.dll이 있는 폴더 경로 입력.

참고 1
변수 값에 jdk-16.0.1 까지만 입력하고 \bin\server는 입력하지 않는 경우도 있다. 되는지는 확인해보지 않았으나 나는 그냥 모든 경로를 다 입력했다.

참고 2
어떤 블로그는 시스템 변수 Path에 C:\Program Files\Java\jdk-16.0.1\bin 을 입력하라고 하는데 위의 JAVA_HOME 변수 값에서 모든 경로를 다 입력했다면 굳이 Path에 추가하지 않아도 되는 듯 하다.

참고 3
마찬가지로 Path의 맨 위에 있는 C:\Program Files\Common Files\Oracle\Java\javapath 를 지우라는 블로그 글도 있었는데 나의 경우에는 지우지 않아도 작동했다.

STEP 4. JPYPE1 1.2.0 (혹은 1.1.2) cp38 설치

Python extension packages 사이트에 들어가서 Java class를 사용할 수 있게 만들어주는 JPYPE1 파일을 다운로드한다. 여기서는 Python3.8을 사용 중이므로 cp38, window 64라면 amd64 32라면 win32를 선택하면 된다. 1.3.0, 1.2.0, 1.1.2 등의 버전이 있는데 내가 시도했을 때 1.3.0은 되지 않았고 1.2.0, 1.1.2는 성공했다.
cmd에서 다운로드 받은 파일이 있는 경로로 이동한 다음 pip install JPype1-1.3.0-cp38-cp38-win_amd64.whl을 입력하면 설치가 된다.

참고 1
conda 가상환경이어도 conda install 말고 pip install을 해야 한다.

참고 2
만약 ...whl is not a supported wheel on this platform 이라는 에러 메시지가 나온다면 파이썬/OS 버전이랑 JPYPE1의 버전이 안 맞는다는 뜻이다. 설치하려는 프로젝트에 파이썬 3.8이 설치했는지 확인한다. 만약 가상환경에 3.8을 설치했다면 가상환경을 활성화한 상태에서 진행했는지 확인한다.

참고 3
C++ Build tools를 이용해서 .whl 파일을 다운로드 받지 않고 cmd에서 바로 설치하는 방법도 있는 듯 하다. 나도 이런 에러를 보고 Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/ 시도했으나 C++ 설치 자체가 잘 안 되어서 포기했다. 혹시 시도해보고 싶다면 이 블로그를 참조.

STEP 5. konlpy 설치 후 테스트

드디어 마지막 단계이다. cmd에서 pip install konlpy로 패키지를 설치한 후 아래와 같이 테스트해본다.

>> from konlpy.tag import Kkma
>> kkma = Kkma()	# 아마 설치가 잘 되지 않았다면 이 단계에서 에러가 났을 것이다.
>> print(kkma.nouns(u'안녕하세요 Soo입니다'))

결과가 잘 나왔다면 성공한 것이다! 👏

참고
만약 위의 테스트를 IDE가 아닌 cmd에서 진행했다면 다음 번에 cmd에서 python을 실행할 때마다 뭔가의 Warning 문구가 나올 수도 있다. 그건 우리가 위에서 print 안에 한글을 입력해서 그런 것이다. 경고 문구가 보기 싫다면 history.py 파일을 삭제하면 된다(대신 이전에 입력한 python 기록도 날아가니 주의).

몇몇 에러

설치하면서 볼 확률이 높은 에러는 다음과 같다.

  1. DLL load failed while importing _jpype: DLL 초기화 루틴을 실행할 수 없습니다. → JPYPE 설치 에러가 난 것이므로 다른 버전의 JPYPE를 설치해본다(STEP 4).
  2. No matching overloads found for constructor java.lang.Boolean(bool) → JDK 에러가 난 것이므로 다른 버전의 JDK를 시도하거나 환경변수를 바꿔본다(STEP 2~3)
  3. jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly. → JAVA_HOME 환경변수를 올바르게 설정했는지 확인한다(STEP 3).
  4. ...whl is not a supported wheel on this platform → JPYPE 버전과 파이썬/OS 버전이 맞지 않다는 뜻이다. 프로젝트 폴더의 파이썬 버전과 JPYPE 버전이 일치하는지 다시 확인하고, 가상환경을 사용 중이라면 가상환경을 활성화하고 설치한다(STEP 4).
  5. Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/ → 아마 JPYPE 설치를 곧바로 시도하다 봤을 것이다. 위에 써 둔대로 C++ Builders를 설치한 다음 진행한다(STEP 4). 근데 이걸 설치하다보면 또다른 난관에 부딪힐 확률이 높으니 JPYPE 설치만이 목적이라면 .whl 파일을 다운로드받아 설치하는 게 정신건강에 좋을 것이다.

(사실 중간부터 지우고 다시 하느니 python 설치부터 다시 하는 게 성공확률이 높을 수도 있다...)

🤘 화이팅

konlpy 패키지 설치부터 막혀서 아... 때려칠까...하는 생각이 드는 사람에게 이 글이 실낱같은 희망이 되었으면 좋겠다. 다들 한글 자연어 분석에 성공하시길! 🤗

17개의 댓글

comment-user-thumbnail
2021년 8월 1일

안녕하세요! konlpy 사용해보려고 몇 시간째 헤매다가 포기할까 싶었을 때 이 글 보고 전부 재설치했더니 잘 돌아가네요!! 정말 감사합니다 😀

1개의 답글
comment-user-thumbnail
2021년 9월 8일

선생님..감사합니다.. 덕분에 해결됐어요 파이썬 3.9로 했어서 안되서
3.8로 다시깔고 JPye 1.12 버전이 없어서 1.1.2 버전으로하니 됐습니다 좋은하루되십쇼

1개의 답글
comment-user-thumbnail
2021년 12월 2일

방송국에서 자사채널 유튜브 댓글 긁어서 분석하는 업무 하는데, 설치가 너무 안되서 좌절하고 있었습니다. 이글이 제게는 실낱이 아니라 굵은 동아줄이 되서 성공하게 되었습니다. 너무 감사드립니다. 커피쿠폰 보내기 버튼 있으면 여러번 누르고 싶군요. 복 많이 받고 대박나세요~

1개의 답글
comment-user-thumbnail
2021년 12월 8일

안녕하세요 감사합니다. 아무리 해봐도 안 되고 구글링을 해봐도 네이버에 검색을 해봐도 나오는 모든 방법 다 써봐도 안 됐는데 결국 파이썬 버전이 문제였던 거로군요... 3.7로 확 낮추고 나머지도 설치하는 거 웬만하면 좀 낮은 버전으로 골라서 안전하게 갔는데 에러코드 한 번 안 뜨고 완벽하게 잘 되네요. 감사합니다. 도움이 많이 되었습니다.

1개의 답글
comment-user-thumbnail
2022년 2월 9일
    KkmaInterfaceJavaClass = kkmaJavaPackage.KkmaInterface
AttributeError: Java package 'kr.lucypark.kkma' is not valid

전부 삭제하고 다시 설치했는데도 위 에러가 계속 뜨네여 ㅜㅜ

1개의 답글
comment-user-thumbnail
2022년 5월 9일

와 jpype 1.1.2로 하니 싹 되네요 너무 기뻐요 감사합니다

1개의 답글
comment-user-thumbnail
2023년 2월 1일

저는 그래서 걍 KIWI 써요

답글 달기
comment-user-thumbnail
2023년 5월 23일

친절하고 상세한 설명 감사드립니다..포기할려고 했다가 이 글 보고 잘 설치됐습니다..! 감사합니다!!

답글 달기
comment-user-thumbnail
2023년 7월 7일

진짜 감사합니다 3.9로 하고 있었는데 chat gpt 에게 물어봐도 x소리만 시전하고 심지어 4.0 이었는데도 삭제 -> 재설치 반복 -> 자바 sdk 삭제 -> 재설치 반복 이것만 계속했는데 java sdk 16.0.1에 파이썬 1.8.17 이 답이네요 진심으로 감사드립니다

답글 달기
comment-user-thumbnail
2023년 10월 2일

4일동안 전처리에 시간을 빼았기고 돌고 돌아 이 글에 도착해서 처음부터 끝까지 따라해서 결국 패키지가 인식이 됩니다..!!! 진짜 너무 감사드리고 싶어서 회원 가입해서 댓글 남깁니다.. 정말 감사합니다!!

답글 달기
comment-user-thumbnail
2023년 10월 23일

"cmd에서 다운로드 받은 파일이 있는 경로로 이동한 다음' 이 부분에서 cmd에서 어떤 걸 입력해야되는 건가요? 단순히 다운받은 파일이 있는 곳을 열면 되는 건가요?

답글 달기