python3.13에서 yake, gensim 등 일부 패키지가 설치되지 않는 문제.
yake 문제 해결 과정이 gensim과 비슷하기 때문에 gensim 문제 하나만 다루겠다.
python 3.13만 있을 때, gensim을 설치하기 위해 이렇게 명령어를 실행시켰었다.
pip install gensim
..\meson.build:78:0: ERROR: Unknown compiler(s): [['ifort'], ['gfortran'], ['flang-new'], ['flang'], ['pgfortran'], ['g95']]
The following exception(s) were encountered:
Running `ifort --help` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `ifort --version` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `ifort -V` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `gfortran --help` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `gfortran --version` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `gfortran -V` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `flang-new --help` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `flang-new --version` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `flang-new -V` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `flang --help` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `flang --version` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `flang -V` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `pgfortran --help` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `pgfortran --version` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `pgfortran -V` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `g95 --help` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `g95 --version` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `g95 -V` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
터미널에 굉장히 긴 내용이 나왔지만, 문제의 핵심은 이거다.
“지정된 파일을 찾을 수 없습니다”.
뭘 못 찾는다는 거지? 그럼 내가 어떤 파일을 줘야 한다는 거지? 혼란스러워서 알아봤다.
gensim은 자연어처리에서 많이 쓰이는 라이브러리로써,
내부적으로 scipy나 numpy같은 과학 계산 라이브러리로 수학 계산을 많이 한다.
나는 사용자 기반 관심사 추천을 위해 사용자 관심사가 잘 담긴 중요 키워드(중요 내용)들을 추출하려 한다.
이 때 gensim 라이브러리를 사용해보려고 한건데, gensim하나만 설치한다고 끝나는 게 아니었던 것이다.
scipy같은 다른 라이브러리들도 함께 설치해야 하는데, 이 과정에서 오류가 난 것이었다!
과학 계산 라이브러리. gensim라이브러리 사용을 위해서 필요.
이 scipy는 일부분이 Fortran이라는 언어로 만들어져 있다고 한다.
설치 중에 그것을 컴파일하려고 시도했는데, Fortran으로 된 일부 코드를 내 컴퓨터에서 직접 빌드(=번역)하려다 실패한 것!
ERROR: Unknown compiler(s): [['ifort'], ['gfortran'], ...]
Running `gfortran --version` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
=> 이 ifort, gfortran 등이 컴파일러였음!!
바이너리 휠이란?
- 컴퓨터에서 직접 빌드할 필요가 없도록, 이미 컴파일을 다 해놓은 설치 파일.
- 마치, 요리된 음식같은 것. 이제 음식을 가져오면 됨.
사전 컴파일된 wheel을 사용하는 명령어는 다음과 같다.
pip install --upgrade pip setuptools wheel
→ 이렇게 pip업그레이드
pip install numpy scipy
바이너리 휠을 사용하여 설치하는 것이니 이제 컴파일 문제 없이 설치가 될 것이다.
하지만.. 나는 문제가 해결되지 않았다..
wheel을 사용해도 계속 같은 문제가 반복된다.
이 때문에 가상환경 재설치, wheel 재업그레이드, 최신 버전인지 하나하나 다 확인, gensim라이브러리 사용 포기 고민 등등.. 많은 고민을 했었다.
그런데 이대로 포기하면 gensim라이브러리를 사용하는 모든 작업들을 다 다른 방법으로만 해야 하는데, 그건 싫었다. 이 라이브러리를 꼭 직접 사용해보고, 알고 싶었다.
지금 사용 중인 python 버전은 3.13
이 버전에서는 일부 라이브러리들이 지원되지 않는다고 한다.
python 3.10버전으로 다시 설치했다.
그 전의 3.13도 그대로 남긴 상태였기 때문에, 이후에 pip 에러가 많이 발생했다(경로가 꼬여서)
이 에러는 해결완료, velog에 복잡한 설정 없는 초간단 해결방법을 업로드했다.
버전 충돌을 막고자, py -3.10 -m venv venv310
명령어로 새 환경을 만들어 실행시켰다.
그리고 이 안에 필요한 패키지들을 설치했다.
결론부터 말하자면, 이렇게 호환성 이슈를 해결했다.
이에 대한 상세 내용을 이어서 작성하겠다.
py -3.10 --version
명령어를 실행시켰을 때, python 3.10.0
이 출력되면 된다.py -3.10 -m venv venv310
명령어로 새 가상환경 생성venv310/Scripts/activate
로 가상환경 진입.pip install --upgrade pip
로 pip 최신화시킨다.pip install numpy scipy
로 먼저 문제가 됐던 패키지를 설치한다.pip install gensim
로 필요했던 gensim을 설치한다.python --version
→ Python 3.10식으로 나올 것pip --version
→ pip 24.0식으로 나올 것pip 업그레이드 중 에러 발생
ERROR: Could not install packages due to an OSError: [WinError 5] 액세스가 거부되었습니다:
'C:\\Users\\[UserName]\\AppData\\Local\\Temp\\pip-uninstall-6grjck6q\\pip.exe'
Check the permissions.
→ 원인은 크게 두 가지. 1. 권한이 없거나, 2. pip가 사용 중이기 때문
관리자 권한으로 PowerShell or CMD를 실행시켜서 다시 시도하면 됨.
터미널 종료 후 다시 터미널 열고 재시도하면 됨.
python -m pip install --upgrade pip
를 하면 pip 실행파일을 직접 불러오므로, pip install --upgrade pip
보다 덜 충돌이 일어남.
나는 이 방법을 사용하지 않았지만, 간절한 사람이 있을까봐 작성만 해두려 한다.
python -m pip install --upgrade --force-reinstall pip
명령어로 강제 업그레이드할 수 있다.
내가 사용하려는 gensim.sumarization모듈을 찾지 못하는 문제 발생
……찾지 못하는 것일까, 모듈이 없는 것일까..?
결론부터 말하면, gensim최신버전(4.0)에서 더 이상 내가 사용하려는 gensim.summarization모듈이 없다고 한다… 슬슬 힘들다
gensim설치 문제 해결한 것은 뿌듯하다!
gensim 최신버전인 4.0버전에서의 변경사항은 다음 글에서 확인할 수 있다.
summarization을 반드시 사용하고 싶다면 구버전을 설치하면 된다.
pip uninstall gensim
pip install gensim==3.8.3
이렇게 하면 gensim.summarization모듈을 사용할 수 있다.
gensim.summatization.keywords를 사용하려 했는데, 이것은 TextRank알고리즘 기반이다.
이 TextRank알고리즘을 기반으로 만들어진 라이브러리는 많다.
그래서 대체 라이브러리들을 알아본 결과, 빠르고 간단한 TextRank를 테스트해볼 수 있다는 summa 라이브러리를 사용하는 것으로 생각을 바꾸었다.
python -m pip install summa
로 설치하면 된다.
참고로 이 때, pip install summa
로 했다가 버전에러(명령어 실행 경로 에러)가 발생했었다.
그러니 안전히 “python -m”으로 명령어를 실행할 것.
⇒ gensim이 Word2Vec이나 FastText같은 단어 임베딩 모델인데, summarization이 반드시 필요한 상황은 아니라서 summa를 사용함으로써 결론이 났다!
그리고, 파이썬 3.13버전은 쓰지 말자..!
이름 | 뭐임? | 관계 |
---|---|---|
TextRank | 알고리즘(아이디어) | 기반 개념 |
gensim | 자연어처리 라이브러리 | TextRank를 포함했다가 삭제됨 |
summa | TextRank 구현 라이브러리 | gensim.summarization의 대체 |
TextRank : "요리법"
gensim : "종합 요리도구 세트" (지금은 칼이 빠짐)
summa : "TextRank 전용 칼"