텍스트마이닝에 사용되는 라이브러리 중 하나인 gensim을 설치하는 방법에 대해 알아본다.
개요
gensim은 토픽모델링을 비롯한 다양한 텍스트마이닝 기법을 사용하기 위해 활용되는 라이브러리이다. gensim은 NumPy, SciPy, scikit-learn과 같은 라이브러리와 함께 사용되어 텍스트 데이터를 효율적으로 처리할 수 있다.
그런데 gensim은 여러 의존 라이브러리가 있고 그에 따른 환경에 민감하기 때문에 그냥 !pip install gensim
같은 코드를 실행했다가 도저히 설치가 안되어 포기하는 사람이 많다.
설치
gensim을 설치하기 위해서는 다음의 코드를 사용할 수 있다.
1 | !pip install gensim |
문제의 진단과 해결
이제 여기부터가 진짜다. 대부분의 경우에 앞의 “pip” 코드로 설치가 되지 않는다. 제대로 설치되지 않는 이유는 단순 오탈자 같은 간단한 이유를 제외하곤 크게 다음과 같다.
- 파이썬 환경 문제
- 의존 라이브러리 버전 문제
- Java 환경 문제
- 컴파일(compile) 문제
파이썬 환경 문제
파이썬의 경우 너무 최신 버전을 사용하면 관련 특정 라이브러리 설치와 호환에 문제가 있을 수 있다. 최근 확인한 gensim 라이브러리의 안정적 설치 버전은 3.11.9 버전인데 파이썬 공식 홈페이지에서 확인할 수 있는 파이썬 최신 버전은 3.13 버전 이상이다. 그래서 처음에 최신 버전으로 파이썬을 설치한 경우 의존성이 별로 없는 라이브러리는 무리 없이 동작할 수 있으나 gensim과 같이 여러 의존 라이브러리가 있는 경우 문제가 발생할 수 있다.
의존 라이브러리 버전 문제
gensim의 의존 라이브러리와 버전은 다음과 같다(4.3.3 버전 기준).
gensim==4.3.3
- numpy [required: >=1.18.5,<2.0, installed: 1.26.4]
- scipy [required: >=1.7.0,<1.14.0, installed: 1.13.1]
- numpy [required: >=1.22.4,<2.3, installed: 1.26.4]
- smart-open [required: >=1.8.1, installed: 7.1.0]
- wrapt [required: Any, installed: 1.16.0]
상기 내용은 gensim 라이브러리를 정상적으로 설치한 후 pipdeptree라이브러리를 통해 확인한 결과이며 예를 들어 NumPy 라이브러리의 경우 1.18.5 이상 2.0 미만의 버전이 필요한데 현재 설치된 버전은 1.26.4 버전이라고 나와 있다. 그리고 SciPy 라이브러리의 경우 1.7.0 이상 1.14.0 미만의 버전이 필요한데 현재 설치된 버전은 1.13.1 버전이라고 나와 있다. 그리고 SciPy 라이브러리는 NumPy 라이브러리에 의존하고 있다는 것을 들여쓰기로 확인할 수 있다.
일단 설치가 제대로 된 시점에서는 상기와 같이 확인할 수 있지만 최초 gensim을 설치하는 시점에는 각 라이브러리의 버전 문제 때문에 여러 곤란한 상황이 생길 수 있다.
먼저 NumPy 의 경우 최신 버전(정확한 최신 버전은 NumPy PyPi공식 페이지 참고)은 2.2 이상이지만 gensim은 2.0 미만의 버전을 요구한다. 그래서 NumPy 라이브러리를 요구사항에 맞게 다운그레이드를 해야 한다.
그리고 SciPy도 마찬가지다. SciPy PyPi공식 페이지에서 최신 버전을 확인해보면 1.15 버전 이상인 것을 알 수 있다. 그래서 이 라이브러리 또한 다운그레이드 해야 한다.
아무튼 의존성이 있는 라이브러리의 버전에 제한이 있는 경우 대부분의 라이브러리는 설치 시 버전이 맞지 않은 경우 자동으로 특정 버전으로 다운그레이드를 시도한다. 그러나 이 경우에도 다운그레이드가 되지 않는 경우가 있으니 이 경우에는 수동으로 다운그레이드를 해야 한다. 여기서 SciPy 라이브러리가 재설치 되는 경우 1.13.1 버전으로 자동 설치 되며(향후 변경될 수 있음) 직접 1.13.1 버전으로 설치하고자 하는 경우 Jupyter Notebook 환경 기준으로 다음과 같은 코드를 사용할 수 있다.
1 | !pip install scipy==1.13.1 |
문제는 또 상기와 같이 SciPy 라이브러리를 1.13.1 버전으로 설치하려고 해도 똑바로 안되는 경우가 있다는 것이다.
예를 들어 다음과 같은 에러 메세지가 뜬다.
1 | ..\meson.build:1:0: ERROR: Unknown compiler(s): [['icl'], ['cl'], ['cc'], ['gcc'], ['clang'], ['clang-cl'], ['pgcc']] |
이는 특정 버전 라이브러리 설치 시 설치 파일의 컴파일(compile)문제로 발생하는 에러이다. 단순하게 말하자면 특정 압축 파일을 푸는 프로그램이 없어서 발생하는 문제이다. 아래의 “컴파일(compile) 문제”에서 자세히 다룬다.
Java 환경 문제
gensim를 사용하는 경우 한글 자연어 처리를 위해 KoNLPy도 같이 사용하는 경우가 많은데 이 때 Java 관련 에러 메세지가 뜨는 경우가 있다. 대표적으로는 다음과 같은 “JAVA_HOME” 또는 “JVM” 관련 에러가 있다.
1 | ValueError: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly. |
이 문제는 라이브러리를 구동하기 위한 Java 파일이 제대로 설치되어있지 않을 수 있고 설치 되었더라도 파이썬이 JAVA 실행파일을 잘 찾지 못하기 때문에 발생하는 문제이다.
Java 설치
Java 6이니 8이니 설치를 할 수 있긴 하지만 JDK(Java Development Kit) 또는 JRE(Java Runtime Environment)를 검색하여 관련 파일을 설치하면 된다.
다음과 같이 google 검색으로 “jre 23”을 검색해 보았다.
물론 jre 뒤의 23은 버전명이긴 한데 해당 숫자는 증가할 예정이지만 몇 년이 지나도 jre 23을 사용해도 대격변이 있지 않는 한 이 버전을 사용해도 큰 무리는 없을 것이다. (문제가 생기면 본 게시글을 업데이트 할 예정)
가장 상단에 뜬 Oracle 링크를 클릭하면 다음과 같은 화면이 나온다.
상단 이미지에 보이는 빨간 네모칸 안에 있는 메뉴 탭과 링크를 잘 보고 파일을 다운받자.
※ 200mb 이상의 파일이니 다운로드에 시간이 좀 소요된다.
다운로드 받은 파일을 실행하면 다음과 같은 창이 뜬다.
중간에 굳이 무언가를 설정할 필요는 없으며 버튼을 누르면 다음과 같이 설치 진행 막대가 뜬다.
설치가 완료되면 다음과 같은 창이 뜬다.
이제 설치한 Java를 파이썬 라이브러리가 제대로 인식할 수 있도록 “JAVA_HOME” 환경변수를 설정해야 하니 다음을 보자.
JAVA_HOME 설정
에러메세지를 따서 “JAVA_HOME” 문제라고는 하지만 정확하게는 환경변수 문제이다. 앞에서 언급했듯 이 문제는 파이썬이 JAVA 실행파일의 위치를 제대로 찾지 못해서 발생하는 문제이다. 그래서 제대로 그 위치를 찾아가게 하려면 대부분의 경우 사용자가 이 위치를 직접 알려줘야 하는데 이 때 설정해야 하는 것이 “환경변수”이다.
Windows 11 운영체제의 경우 검색창에 “환”만 입력해도 환경변수 설정 메뉴가 다음과 같이 나온다.
해당 메뉴를 눌러서 열면 다음과 같은 창이 뜬다.
[환경 변수(N)] 버튼을 눌러서 다음과 같은 새로운 창을 확인하자.
아래 부분의 시스템 변수 설정이 우선 필요하다.
“JAVA_HOME” 환경변수를 설정해줘야 하는데 변수명을 정확하게 “JAVA_HOME”으로 다음과 같이 설정해야 한다. 그리고 경로는 설치한 Java의 경로를 설정해주면 된다. 이 경우에는 “C:\Program Files\Java\jdk-23”이다(여기서 역슬래시와 원화 표시는 같음).
가끔 이 환경변수를 설정할 때 “JAJA_HOME”이라던가 “JABA_HOME”, “JAVA-HOME” 등 사소한 실수를 저질러서 똑바로 설정하지 못할 수 있으니 주의하자.
아무튼 여기까지 했더라도 관련 코드가 올바르게 돌아가지 않고 특정 메세지가 뜨면서 주피터 노트북이 마음대로 재시작 되기도 한다. 다시 아무리 실행해도 해당 절차 이후로 진행되지 않고 계속해서 재시작이 된다. 이 경우에는 “JAVA_HOME”을 설정한 이후에 한 번 더 설정을 해줘야 하는데 바로 사용자 변수의 “path” 설정이다.
기존에 있는 “Path” 항목을 선택하고 [편집(E)…] 버튼을 눌러 해당 변수를 편집한다.
이것 역시 오탈자가 나지 않아야 하며, 하나라도 오탈자가 발생한다면 라이브러리 설치나 실행이 올바르게 되지 않으니 주의하자.
그리고 또 환경변수를 분명 저장했다고 생각 했는데 관련 코드를 실행하면 똑같이 다음과 같은 에러가 발생할 수 있다.
1 | ValueError: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly. |
이럴 땐 제대로 환경변수 설정이 되었는지 꼭 다시 확인 해보자.
컴파일(compile) 문제
관련 코드를 실행하다 보면 오류 메세지에 “NO_CYTHON”이라는 단어가 뜨는 경우가 있다. 이는 특정 라이브러리가 컴파일(compile) 문제로 설치되지 않는 경우라고 할 수 있다. Microsoft Visual Studio Build Tools, MinGW, Cython 등 관련 프로그램 또는 라이브러리를 설치하면 해결할 수 있다.
Cython 설치
가장 간단하게 문제를 해결할 수 있는 방법이다. 주피터 노트북 기준으로 다음의 코드를 실행하자.
1 | !pip install Cython |
Microsoft Visual Studio Build Tools 설치
Cython 라이브러리 설치로 해결되지 않는 경우 별도의 프로그램을 설치해야 할 수 있다. 그 방법 중 하나가 Microsoft Visual Studio Build Tools 설치이다.
※ 설치파일 링크
상기 이미지를 좀 더 자세하게 설명하고자 한다. 우선 설치 파일(Build Tools)을 다운로드 받게 되면 다음과 같은 창이 뜬다.
여기서 [수정(M)] 버튼을 누르면 다음과 같은 창이 뜬다.
“C++를 사용한 데스크톱 개발” 항목을 체크하여 관련 항목 설치를 진행하면 된다.
그래도 안된다면?
여기까지 해서도 문제가 해결이 되지 않는다면 앞의 절차를 잘못 수행했을 가능성이 매우 높다.
도저히 해결이 되지 않는다면 파이썬부터 관련 프로그램을 모두 깔끔하게 삭제하고 진행하는 것을 추천한다.
간혹 파이썬 라이브러리 설치 버전이 서로서로 안맞고 충돌을 일으켜 문제가 되는 경우가 있는데 이를 깔끔하게 해결하기 위해서는 Windows 운영체제 기준으로 사용자 폴더의 숨겨진 폴더인 “AppData” 폴더 내부에 위치한 파이썬 관련 폴더를 모두 삭제하는 것을 추천한다.
다음과 같이 “AppData” 폴더 깊숙하게 들어가 있는 파이썬 폴더는 다음과 같다.
※ 일반적인 경로: C:/Users/{사용자명}/AppData/Local/Programs/Python
그리고 주피터 노트북의 커널 뿐만 아니라 사용 중인 컴퓨터 자체를 재부팅 해야 올바르게 변경 사항이 적용되는 경우가 있으니 다양한 설정 이후에는 재부팅을 권장한다.