Python : 3.13버전에서 패키지 설치 문제(해결) - jensim with scipy, wheel

Aurora·2025년 3월 25일
2

keyWord_modelTest

목록 보기
1/4

📜 목차


python3.13에서 yake, gensim 등 일부 패키지가 설치되지 않는 문제.
yake 문제 해결 과정이 gensim과 비슷하기 때문에 gensim 문제 하나만 다루겠다.

문제1. 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에 대해서 먼저 알자

gensim은 자연어처리에서 많이 쓰이는 라이브러리로써,
내부적으로 scipy나 numpy같은 과학 계산 라이브러리로 수학 계산을 많이 한다.

나는 사용자 기반 관심사 추천을 위해 사용자 관심사가 잘 담긴 중요 키워드(중요 내용)들을 추출하려 한다.

이 때 gensim 라이브러리를 사용해보려고 한건데, gensim하나만 설치한다고 끝나는 게 아니었던 것이다.

scipy같은 다른 라이브러리들도 함께 설치해야 하는데, 이 과정에서 오류가 난 것이었다!

scipy란?

과학 계산 라이브러리. gensim라이브러리 사용을 위해서 필요.

이 scipy는 일부분이 Fortran이라는 언어로 만들어져 있다고 한다.

설치 중에 그것을 컴파일하려고 시도했는데, Fortran으로 된 일부 코드를 내 컴퓨터에서 직접 빌드(=번역)하려다 실패한 것!

  • 문제 원인 결론 : Fortran 컴파일러가 없어서 scipy를 설치할 수 없고, scipy를 설치할 수 없으니 gensim도 설치되지 않았던 것!!
    ERROR: Unknown compiler(s): [['ifort'], ['gfortran'], ...]
    Running `gfortran --version` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
    => 이 ifort, gfortran 등이 컴파일러였음!!
  • 참고 : Fortran이란, 과학 계산용으로 만들어진 프로그래밍 언어

해결방법 : 바이너리 휠로 설치

바이너리 휠이란?

  • 컴퓨터에서 직접 빌드할 필요가 없도록, 이미 컴파일을 다 해놓은 설치 파일.
  • 마치, 요리된 음식같은 것. 이제 음식을 가져오면 됨.

1. wheel 사용

사전 컴파일된 wheel을 사용하는 명령어는 다음과 같다.

pip install --upgrade pip setuptools wheel

→ 이렇게 pip업그레이드

2. numpy, scipy를 wheel로 먼저 설치

pip install numpy scipy

바이너리 휠을 사용하여 설치하는 것이니 이제 컴파일 문제 없이 설치가 될 것이다.


하지만.. 나는 문제가 해결되지 않았다..

문제2. wheel을 사용해도 Fortran컴파일 에러

wheel을 사용해도 계속 같은 문제가 반복된다.

이 때문에 가상환경 재설치, wheel 재업그레이드, 최신 버전인지 하나하나 다 확인, gensim라이브러리 사용 포기 고민 등등.. 많은 고민을 했었다.

그런데 이대로 포기하면 gensim라이브러리를 사용하는 모든 작업들을 다 다른 방법으로만 해야 하는데, 그건 싫었다. 이 라이브러리를 꼭 직접 사용해보고, 알고 싶었다.

지금 사용 중인 python 버전은 3.13
이 버전에서는 일부 라이브러리들이 지원되지 않는다고 한다.

3.10(다른 버전)의 Python 설치

python 3.10버전으로 다시 설치했다.

그 전의 3.13도 그대로 남긴 상태였기 때문에, 이후에 pip 에러가 많이 발생했다(경로가 꼬여서)
이 에러는 해결완료, velog에 복잡한 설정 없는 초간단 해결방법을 업로드했다.

해결) 3.10버전 전용 가상환경 따로 생성

버전 충돌을 막고자, py -3.10 -m venv venv310명령어로 새 환경을 만들어 실행시켰다.

그리고 이 안에 필요한 패키지들을 설치했다.

결론부터 말하자면, 이렇게 호환성 이슈를 해결했다.

이에 대한 상세 내용을 이어서 작성하겠다.

설치 상세 과정

  1. python 3.10설치
    1. https://www.python.org/downloads/release/python-3100/ 에서 다운로드
    2. “Add Python 3.10 to PATH”를 체크하며 설치.

  2. 파이썬 버전 확인
    1. py -3.10 --version 명령어를 실행시켰을 때, python 3.10.0 이 출력되면 된다.

  3. 가상환경 만들어 진입
    1. py -3.10 -m venv venv310명령어로 새 가상환경 생성
    2. venv310/Scripts/activate 로 가상환경 진입.
    3. 프롬프트가 (venv310)으로 바뀌면 된다.

  4. pip 버전 최신화
    1. pip install --upgrade pip 로 pip 최신화시킨다.
    2. 이 때, “파이썬을 다운그레이드했는데 왜 다시 업그레이드해?”라고 생각이 들 수 있지만, 이것은 파이썬을 업그레이드 하는 개념이 아니라 pip자체를 최신 버전으로 업데이트하는 것이다.
    3. 참고 : pip란, 파이썬 패키지 관리자이다. 즉, python버전과 pip버전은 다른 것임! python버전엔 영향 없음!

  5. 필요 패키지 설치
    1. pip install numpy scipy 로 먼저 문제가 됐던 패키지를 설치한다.
    2. 설치되었다면 이제 pip install gensim 로 필요했던 gensim을 설치한다.

  6. (선택)버전 확인
    1. python --version → Python 3.10식으로 나올 것
    2. 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가 사용 중이기 때문

  1. 권한이 없을 때

관리자 권한으로 PowerShell or CMD를 실행시켜서 다시 시도하면 됨.

  1. pip사용 중일 때

터미널 종료 후 다시 터미널 열고 재시도하면 됨.

  1. (대안) pip 직접 실행

python -m pip install --upgrade pip 를 하면 pip 실행파일을 직접 불러오므로, pip install --upgrade pip 보다 덜 충돌이 일어남.

  1. (권장x) pip강제 업그레이드

나는 이 방법을 사용하지 않았지만, 간절한 사람이 있을까봐 작성만 해두려 한다.

python -m pip install --upgrade --force-reinstall pip 명령어로 강제 업그레이드할 수 있다.

문제 3. gensim 사용 불가

내가 사용하려는 gensim.sumarization모듈을 찾지 못하는 문제 발생

……찾지 못하는 것일까, 모듈이 없는 것일까..?

결론부터 말하면, gensim최신버전(4.0)에서 더 이상 내가 사용하려는 gensim.summarization모듈이 없다고 한다… 슬슬 힘들다

gensim설치 문제 해결한 것은 뿌듯하다!

gensim 최신버전인 4.0버전에서의 변경사항은 다음 글에서 확인할 수 있다.

참고 : Gensim 3.x에서 4로 마이그레이션

해결방법

방법1. 구버전 설치

summarization을 반드시 사용하고 싶다면 구버전을 설치하면 된다.

pip uninstall gensim
pip install gensim==3.8.3

이렇게 하면 gensim.summarization모듈을 사용할 수 있다.

방법2. 최신버전 유지 + 대체 라이브러리 사용

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? summa?

이름뭐임?관계
TextRank알고리즘(아이디어)기반 개념
gensim자연어처리 라이브러리TextRank를 포함했다가 삭제됨
summaTextRank 구현 라이브러리gensim.summarization의 대체

비유하자면

TextRank : "요리법"

gensim : "종합 요리도구 세트" (지금은 칼이 빠짐)

summa : "TextRank 전용 칼"

profile
개발에 애정을 쏟는 연구자입니다

0개의 댓글