[Bug] 동일한 이름을 가진 Library 가 꼬이는 경우
대부분은 Python 을 통해서 개발을 할 때 Python 단독으로만 사용하지않고 라이브러리를 사용해서 같이 개발을 진행한다.
그러면 우리가 흔히 아는 pip 혹은 poetry 를 이용해서 라이브러리들을 관리한다.
그럴때 가끔 마주하는 문제가 있다. 바로 라이브러리가 꼬이는 경우이다.
이렇게 되는 경우 바로 알아차리는 경우도 있고 아닌 경우도 있다.
뭐가 되었든 애매한 상황이 되어버린다.(주로 라이브러리 이름은 다른데 실제로 설치되어진 라이브러리 이름이 동일한 경우 발생)
겪었던 일
라이브러리 중에 공교롭게도 dotenv 와 python-dotenv 두개가 존재한다. 그리고 이 라이브러리의 패키지명은 dotenv 이다.
dotenv 를 설치하면 dotenv 와 python-dotenv 가 설치되어진다.
이렇게 되는 경우 당연히 dotenv 를 삭제하면 우리는 정상작동이 될 거라고 생각한다.
하지만 정상작동을 하지않는다.
python-dotenv를 인식하지 못한다.
이유는 동일한 라이브러리의 이름을 가진 라이브러리가 설치되면 덮어씌우기를 진행하기에 나중에 설치된 dotenv 가 마지막으로 남아
아래와 같이 구성이 되어진다.
그러면 지우면 된다고 말하면 되는데
삭제 전을 유심히보아라
삭제 후
이렇게 되어진다.
결과는 __init__.py 가 사라지고 dotenv-0.0.5.dist-info 가 삭제될 뿐이다.
이렇게 될 경우 일반적으로는 접근을 하는 것이 불가능해진다.
그렇다면 python-dotenv 도 삭제하면 되는 거 아니야라고 할 수도 있다.
명령어를 쳐서 삭제를 해도 밑의 dist-info 와 dotenv 가 삭제가 안된다.
결국 계속 무한의 굴레에 빠지는 것이다.
해결방법
해결방법은 진짜 매우 간단하다
python_dotenv-1.0.0.dist-info 를 삭제하면 된다.
순서로 풀어서 설명하면
- dotenv 삭제(poetry or pip or 직접삭제)
- python_dotenv-1.0.0.dist-info(직접삭제)
- python-dotenv 재설치
그렇게 하면 python-dotenv 가 제대로 동작하는 모습을 볼 수 있다.
이게 dotenv 에서만 발생하는 것이 아니고 패키지명이 동일하면 언제든 생길 수 있는 문제이다.
그렇기에 만약에 이러한 문제가 발생하면 .dist-info 를 직접적으로 삭제를 하는 방식을 택해야한다.
저 부분이 직접적으로 관리가 되어지는 포인트이기 때문이다.