환경
Windows 10 Pro
python 3.8.12
에러 발생 상황
konlpy를 활용해 형태소 분석하는 코드가 포함된 앱을 cx_Freeze 모듈을 활용하여 exe 실행파일을 만들었다.
앱이 cmd창에서 파이썬 파일을 실행할 때는 에러없이 잘 실행되었으나 exe 파일을 실행하면 아래와 같은 에러 메세지가 뜨는 상황.
에러 메세지
File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\jpype\_core.py", line 221, in startJVM
_jpype.startup(jvmpath, tuple(args),
SystemError: java.lang.ClassNotFoundException: org.jpype.classloader.DynamicClassLoader
해결
역시 에러 메세지로 구글 검색해서 나오는 몇몇 블로그를 확인했는데, 이전 에러의 경우와 같이 jpype 버전을 낮춰보라는 제안이 많았다. 나는 이미 지난 번에 한 번 낮춰서 1.2.0 버전이었는데, 1보다 낮은 버전은 또 파이썬 3.8.12와 compatible하지 않았다. 그래서 1.12.0 까지 낮췄는데도 잘 실행이 되지 않았다.
깃허브 jpype 레포의 이슈에서 이와 같은 논의를 볼 수 있었는데, exe 실행파일만들때 옵션으로 add-binary 해서 site-packages에 org.jpype.jar를 추가하라는 거였는데, cx_Freeze 모듈에서 대응하는 코드를 찾지 못해 포기.
https://github.com/jpype-project/jpype/issues/876
결국 파이참에서 새 프로젝트를 만들고, 코드에서 사용하는 라이브러리를 하나씩 requirements에 적용하면서 다시 환경을 구축해 해결하였다.