부리부리부리

[Python] module konlpy 관련 오류 해결 본문

언어/Python

[Python] module konlpy 관련 오류 해결

부리부리부리부리 2021. 12. 13. 09:34

konlpy가 java로 되어있어서(?) 그런지 python에서 실행하려할 때 굉장히 번거롭다.

 

1. konlpy관련 설치 ( JAVA, JPype1, konlpy) 

 

2. SystemError: java.nio.file.InvalidPathException: Illegal char <*> 

 

3. AttributeError: module 'tweepy' has no attribute 'StreamListener'

 

pip install 하면서 차근차근 오류들을 해결해봐도 산넘어 산처럼 별의 별 오류들이 또 뜬다..

 

첫 번째로 konlpy.. 진짜 이새끼는 답도 없다

 

일단 https://www.oracle.com/java/technologies/downloads/ 

여기서 JAVA를 설치해주고 환경변수 설정을 해준다. 

이런 식으로 윈도우 검색창에 고급 시스템 설정 보기를 들어가준 후 

 

환경 변수 => 시스템 변수 ( 사용자 변수 말고 시스템 변수 ) 에 JAVA_HOME을 추가해준다.

변수 이름 : JAVA_HOME

변수 값 : C:\Program Files\Java\jdk-17.0.1\bin\server\jvm.dll

(jvm.dll이 있는 주소면 됩니다)

 

이제 JAVA는 됐고 JPype 차례입니다.

https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype

 

Python Extension Packages for Windows - Christoph Gohlke

by Christoph Gohlke, Laboratory for Fluorescence Dynamics, University of California, Irvine. Updated on 12 December 2021 at 16:42 UTC. This page provides 32 and 64-bit Windows binaries of many scientific open-source extension packages for the official CPyt

www.lfd.uci.edu

여기서 내 파이썬 버전에 맞는 Jpype를 다운받아야 한다.  (cmd 창에 python만 입력해보세요 버전나와요)

나같은 경우는 3.10.1이고 윈도우 x64를 사용중이기에

jpype 관련 링크 클릭하고 ctrl+F =&amp;amp;amp;amp;gt; jpype

맨 위 친구를 다운받았다. 그리고 konlpy를 사용할 파일에 다운받은 Jpype1-1.3.0-cp310-cp310-win_amd64.whl를 갖다놓고 cmd 창에서 해당 파일로 이동 ( cd desktop => cd asd ..  이런식으로 ) 

그 후에 pip install Jpype1-1.3.0-cp310-cp310-win_amd64.whl 을 해주면 딱 하나 빼고 완료가 되었다. 

 

* 지금까지 한것 : JAVA 재설치 후 환경변수 설정, pip install konlpy, pip install wheel, pip install Jpype1-1.3.0-cp310-cp310-win_amd64.whl * 

(처음엔 pip install konlpy 했는데도 자꾸

ModuleNotFoundError: No module named 'konlpy'가 떠서 그냥 파이썬 재설치 했습니다..

pip install --upgrade pip도 안먹고,, 아몰랑 재설치 최고..)

 

SystemError: java.nio.file.InvalidPathException: Illegal char <*> 

 

다시 봐도 열받네 얘는 .. 에러문 그대로 복사해서 구글링하면 제일 많이나오는 말이 JAVA_HOME 환경변수를 제대로 설정하라고 한다. 이미 환경변수 설정한 나로서는 미치고 팔짝뛰었다.. 그래서 찾고 찾다 나온게.. 역시 킹택오버플로우

 

https://stackoverflow.com/questions/65842567/systemerror-java-nio-file-invalidpathexception

 

SystemError: java.nio.file.InvalidPathException:

I'm trying to learn some Korean NLP by using KoNLPy library. This is the code that I used: from konlpy.tag import Kkma kkma=Kkma() print(kkma.morphs("열심히 코딩한 당신, 연휴에는 여행을 가봐요")) And ...

stackoverflow.com

 

요약하자면 별표를 지우라는 뜻인데, 일단 파이썬 site-packages에 konlpy에 들어가야한다.

 

.. \Programs\Python\Python310\lib\site-packages\konlpy\jvm.py 

 

저 jvm.py를 열어보면 

 

 

init_jvm 함수 안에 folder_suffix 가 있는데, 여기서 # JAVA sources 와 #Twitter(Okt) 하위 항목에 

각각 '{0}{1}*' 가 들어있다. 여기서 *만 지우고 저장하면 끝이다. 진짜 끝..

 

* 참고로 저는 별표를 지워도 안돼서 진짜 그만할려다가 마지막으로 지금까지 했던것들 전부 삭제하고 재설치해서 순서대로 실행하니 제대로 잘 되었습니다.. 힘내세요.. *

 

 

AttributeError: module 'tweepy' has no attribute 'StreamListener'

얘는 간단합니다. 설치되어있는 tweepy 모듈 최신버전에는 StreamListener가 다른 이름으로 바뀌어서 생기는 오류인데, 저는 그냥 tweepy의 예전 버전인

 pip install tweepy==3.10.0 

설치받으니 해결되었습니다.

 

이상 끝~~ ㅅㄱㅅㄱ~~