Python에서 패키지 설치는 대부분 pip install 패키지명으로 쉽게 다운받을 수 있지만, KoNLPY 설치의 경우 Java 기반으로 만들어져있어 추가적인 작업이 필요하다. 따라서 KoNLPy 패키지 설치 방법 및 에러가 발생할 수 있는 경우를 정리해보려고 한다.
참고로 나는 주피터 노트북이나, cmd 창에서 Python 셸을 띄워서 KoNLPy를 사용했을 때는 오류없이 정상적으로 진행되었지만, Pycharm에서는 아래와 같은 에러가 발생했었다. 만약 에러가 발생했다면, 아래 과정 중 빠진 것이 있는지 잘 살펴보고 확인한다면 해결할 수 있을 것이다.
SystemError: java.nio.file.InvalidPathException: Illegal char <> at index 72: C:\Users\story\Desktop\brainstorming\venv\Lib\site-packages\konlpy\java\*
1. Anaconda와 파이썬 버전 확인
혹시 아나콘다가 깔려있다면 꼭 거쳐야하는 과정이다. Pycharm에서 확인한 파이썬 버전과 cmd 창에서
확인한 파이썬 버전이 달라 KoNLPy 설치 후에도 에러가 났었다. 따라서 꼭 아나콘다와 파이썬 버전을 맞춰주어야 이후 원활하게 진행할 수 있다..!!
2. jdk 설치 및 환경변수 설정
이제 djk를 설치해준다.
https://www.oracle.com/kr/java/technologies/javase/javase-jdk8-downloads.html
설치 완료했으면 "환경변수"를 윈도우 검색 창에 입력하면 "시스템 환경변수 편집"이 뜰 것이다. 여기서 사용자 변수가 아닌 "시스템 변수" 부분을 설정해주어야한다. 변수 이름을 JAVA_HOME으로 설정한 뒤 자신이 JDK를 설치한 경로의 bin 폴더를 변수값으로 지정해준다. 그리고 시스템 변수에서 Path 변수를 선택하여 "편집"을 클릭한 후 동일한 경로를 추가해준다.
여기서 또 주의해야할 점이 있다. jdk가 여러 개 깔려있을 경우 꼭 확인해야한다.
cmd 창에 java -version을 입력했을 때와 javac -version을 입력했을 때 동일한 버전이 뜨는지 확인한다. 만약 jdk가 여러 개 깔려있을 경우 버전이 다르게 뜨는 경우가 많다. 따라서 최근 설치한 버전을 제외하고 나머지는 삭제하는 것을 추천한다.
3. pip 업그레이드
pip install --upgrade pip
Pycharm 터미널에 위 명령어를 입력해서 pip 업그레이드를 진행한다.
4. JPype1 설치
아래 링크로 들어가서 **Python 버전에 맞는 JPype를 설치한다. 예를 들어, 파이썬 버전이 3.8이고, 64비트이면 JPype1‑1.1.2‑cp38‑cp38‑win_amd64.whl를 설치한다. 만약 파이썬 메인 화면의 install 버튼을 눌러 설치했을 경우 32비트로 설치되어있을 확률이 크므로 꼭 아래 명령어를 터미널에 입력해서 확인해야한다.
>>> import platform
>>> print(platform.architecture())
https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype
그런데 JPype1‑1.3.0‑cp38‑cp38‑win_amd64.whl가 있고 JPype1‑1.1.2‑cp38‑cp38‑win_amd64.whl가 있다. 나의 경우 1.3.0 버전으로 했을 때는 오류가 나고 1.1.2 버전으로 설치했을 경우에는 오류가 나지 않았다. 만약 1.3.0 버전으로 설치했을 경우 오류가 난다면 1.1.2로 다시 설치해서 시도해보는 것을 추천한다.
위 링크에서 JPype1을 설치했다면 Pycharm 터미널에 pip install [위에서 다운받은 JPype1 파일 경로\파일명] 을 입력하여 설치한다. 나의 경우 아래와 같이 입력했다.
pip install JPype1‑1.1.2‑cp38‑cp38‑win_amd64.whl
5. KoNLPy 설치
이제 4번까지 다 완료했으면 다 된 것이다. Pycharm 터미널에 pip install konlpy를 입력하여 설치한다.
pip install konlpy
Pycharm에서 파이썬 콘솔창에 다음과 같이 입력했을 경우 아무 에러없이 잘 넘어갔다면 성공한 것이다!