성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
[정성태] 저렇게 조각 코드 말고, 실제로 재현이 되는 예제 프로젝트를 압...
[정성태] Modules 창(Ctrl+Shift+U)을 띄워서, 해당 Op...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>파이썬 - konlpy 사용 시 JVM과 jpype1 관련 오류</h1> <p> 다음과 같이 konlpy 사용 시,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > from konlpy.corpus import kolaw from konlpy.tag import Kkma, Hannanum msg = """ ...[생략]... """ h = Hannanum() h.morphs(msg) </pre> <br /> 이런 오류가 발생한다면?<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Traceback (most recent call last): File "C:/pycharm/work/pytest/main.py", line 12, in <module> kkma = Hannanum() File "C:\Anaconda3\lib\site-packages\konlpy\tag\_hannanum.py", line 108, in __init__ jvm.init_jvm(jvmpath, max_heap_size) File "C:\Anaconda3\lib\site-packages\konlpy\jvm.py", line 55, in init_jvm jvmpath = jvmpath or jpype.getDefaultJVMPath() File "C:\Anaconda3\lib\site-packages\jpype\_jvmfinder.py", line 74, in getDefaultJVMPath return finder.get_jvm_path() File "C:\Anaconda3\lib\site-packages\jpype\_jvmfinder.py", line 215, in get_jvm_path .format(self._libfile)) jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly. </pre> <br /> 이상하군요, 분명히 제 경우에 JVM_HOME이 정의돼 있는데 jvm.dll을 찾지 못한다고 합니다. 재미있는 것은, Hannanum의 경우 발생하고 Kkma의 경우에는,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > kkma = Kkma() print(kkma.sentences(msg)) </pre> <br /> 정상 동작합니다. 일단 확실히 하기 위해 파이썬 코드에서 JAVA_HOME 환경 변수를 출력해 봤는데요,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > print(os.environ.get('JAVA_HOME')) /* 출력 결과 C:\Program Files\AdoptOpenJDK\jdk-11.0.10.9-hotspot\ */ </pre> <br /> 아무래도 OpenJDK의 탓인 걸까요? 그래서 명시적으로 Oracle JDK를 명시해 줬더니,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > os.environ['JAVA_HOME'] = r'C:\Program Files\Java\jdk1.8.0_161' print(os.environ.get('JAVA_HOME')) h = Hannanum() print(h.morphs(msg)) </pre> <br /> 잘 동작합니다. ^^; 그러니까, Kkma는 내부 코드에서 OpenJDK를 지원하는 것이고, Hannanum은 그렇지 못한 것입니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 참고로, 저렇게 했는데도 이런 오류가 발생한다면?<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Traceback (most recent call last): File "C:/pycharm/work/pytest/main.py", line 12, in <module> kkma = Kkma() File "C:\Anaconda3\lib\site-packages\konlpy\tag\_kkma.py", line 95, in __init__ jvm.init_jvm(jvmpath, max_heap_size) File "C:\Anaconda3\lib\site-packages\konlpy\jvm.py", line 67, in init_jvm convertStrings=True) File "C:\Anaconda3\lib\site-packages\jpype\_core.py", line 227, in startJVM ignoreUnrecognized, convertStrings, interrupt) SystemError: java.nio.file.InvalidPathException: Illegal char <*> at index 43: C:\Anaconda3\lib\site-packages\konlpy\java\* </pre> <br /> 이 문제는 JPype1과 현재 파이썬 버전의 불일치라고 합니다. 그런데, konlpy 설치 당시의 출력을 보면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > (base) C:\Users\testusr> <span style='color: blue; font-weight: bold'>pip install konlpy</span> Collecting konlpy Downloading konlpy-0.5.2-py2.py3-none-any.whl (19.4 MB) |████████████████████████████████| 19.4 MB 840 kB/s ...[생략]... Collecting JPype1>=0.7.0 Downloading <span style='color: blue; font-weight: bold'>JPype1-1.3.0-cp37-cp37m-win_amd64.whl</span> (361 kB) |████████████████████████████████| 361 kB 6.8 MB/s ...[생략]... Successfully installed JPype1-1.3.0 beautifulsoup4-4.6.0 konlpy-0.5.2 typing-extensions-3.10.0.0 WARNING: You are using pip version 21.2.2; however, version 21.2.3 is available. You should consider upgrading via the 'C:\Anaconda3\python.exe -m pip install --upgrade pip' command. </pre> <br /> cp37은 CPython3.7을 의미하는 듯하고, 따라서 현재 설치된 파이썬 3.7.3이기 때문에,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > (base) C:\Users\testusr> <span style='color: blue; font-weight: bold'>python</span> <span style='color: blue; font-weight: bold'>Python 3.7.3</span> (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. </pre> <br /> JPype1 버전이 정상적으로 설치된 것입니다. 그래서 이 문제를 딱히 해결할 수 없었는데, 다음의 글에서 해법을 찾았습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 2021년 5월 konlpy 설치시 문제점들 ; <a target='tab' href='https://daewonyoon.tistory.com/386'>https://daewonyoon.tistory.com/386</a> </pre> <br /> 위의 글에서는 파이썬 3.7과 3.8에서의 오류 상황을 해결하고 있는데요, 제 경우에는 3.7이었으므로 다음과 같이 제시한 명령어를 실행했더니,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > (base) C:\Users\testusr> <span style='color: blue; font-weight: bold'>pip install "jpype1<1"</span> Collecting jpype1<1 Downloading JPype1-0.7.5-cp37-cp37m-win_amd64.whl (1.4 MB) |████████████████████████████████| 1.4 MB 1.7 MB/s Installing collected packages: jpype1 Attempting uninstall: jpype1 Found existing installation: JPype1 1.3.0 Uninstalling JPype1-1.3.0: Successfully uninstalled JPype1-1.3.0 Successfully installed jpype1-0.7.5 </pre> <br /> 다행히 이후 잘 동작합니다. ^^<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
6237
(왼쪽의 숫자를 입력해야 합니다.)