어떻게 발생했지?
퇴사한 분의 오래된 PR을 받게 되어 정리할 겸 기능 수정을 거치고 pytest를 실행하였다. 하지만 아래 부분에서 에러가 발생하며 실행이 되지 않았다. 갑자기 왜...
E ImportError: cannot import name 'BaseResponse' from 'werkzeug.wrappers' (/Users/<user>/opt/anaconda3/envs/<env name>/lib/python3.8/site-packages/werkzeug/wrappers/__init__.py)
from werkzeug.wrappers import BaseResponse # 오류 발생 부분
에러 메시지에서 awscli를 보았는데 순간 다른 브랜치에서 설치한 awscli 때문인 게 아닐까 싶어서 가상환경에서 requirements.txt를 다시 설치하기로 생각했다. 이제 생각해 보면 진짜 그게 문제인지 확인도 했어야 싶다. 에러도 제대로 보고..
조치
해결 과정
아래는 해결하려고 시도한 과정이다.
pip freeze > temp-requriements.txt # 현재 가상 환경에 설치된 패키지 목록을 뽑는다.
pip unsinstall temp-requirements.txt -y # 뽑은 패키지 목록을 삭제한다.
pip install -r requirements.txt # 새로이 원래 requirements를 설치하려 했으나 여기서 에러가 발생했다.
패키지를 다시 설치하는 과정에서 에러가 발생하였는데 처음 보는 에러였다. 에러를 보아 특정 패키지에 어떤 파일이 없다는 것 같았다.
ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/Users/<user>/opt/anaconda3/envs/<env_name>/lib/python3.8/site-packages/s3transfer-0.2.1.dist-info/METADATA'
그래서 dist-info가 뭐지 하고 찾아보았는데 패키지의 배포 정보를 포함하는 디렉터리라고 한다. 그중 metadata를 찾으려 했는데 없다는 의미로 생각되었고 uninstall 하면서 제대로 삭제가 되지 않았나? 싶었다. 그래서 다시 설치하기도 하니 해당 디렉터리를 지워볼까 싶었다.
마침 https://life-is-potatoo.tistory.com/91 도 보게 되어 실행해 보았다.
rm /Users/<user>/opt/anaconda3/envs/<env_name>/lib/python3.8/site-packages/s3transfer-0.2.1.dist-info/*
rmdir /Users/<user>/opt/anaconda3/envs/<env_name>/lib/python3.8/site-packages/s3transfer-0.2.1.dist-info
pip install -r requirements.txt # 원활히 설치되었다.
그래서 dist-info는?
아래는 chat gpt에게 물어본 결과이다.
Python 패키지에서 dist-info 디렉터리는 배포 정보를 포함하는 메타데이터 및 다른 관련 파일을 포함하는 디렉터리입니다. 주로 site-packages 디렉터리 내에서 패키지 설치 시 생성됩니다. 이 디렉터리에는 패키지의 이름, 버전, 의존성 및 기타 메타데이터가 포함된 METADATA 또는 PKG-INFO 파일이 포함됩니다. 또한 패키지에 대한 설치된 파일의 목록을 포함하는 RECORD 파일도 있습니다. 이 정보는 pip 및 다른 Python 패키지 관리 도구가 패키지를 설치, 업데이트, 제거하는 데 사용됩니다. 종종 dist-info 디렉터리는 패키지의 이름과 버전으로 이루어진 폴더 내에 있습니다.
댓글