초딩도 할 수 있는 파이썬 자동화

[초딩도 할 수 있는 파이썬] ModuleNotFoundError: No module named ~~ 에러가 뜨는 경우

나도한다코딩 2022. 9. 29. 21:48

ModuleNotFoundError 가 나는 이유 두가지

다른 사람들 파이썬 코드를 따라하다가보면 종종

ModuleNotFoundError: No module named ~~~

같은 에러가 뜨는 경우가 있다.

webdriver_manger 모듈이 없는 경우

보통 위와같은 에러가 나는 경우는 2가지이다.

1. 해당 모듈이 설치되어 있지 않다.
2. 해당 모듈이 설치되어있으나 불러오지를 못한다.

사실 1번은 해결이 어렵지 않다. pip install [모듈명] 혹은 conda install [모듈명] 해서 설치하면 된다. 문제는 저렇게 설치했는데도 여전히 에러나는 경우다. 경로가 꼬여서 현재 사용중인 python과 설치한 모듈이 서로 다른 위치에 있어 인식하지 못하는 경우다.

이를 해결하기 위해선 우선 현재 사용중인 python이 어느 위치에 있는지 파악하는 것이 중요하다.

 

파이썬 실행 파일 위치 확인 방법 - where 함수 이용하기

일단 이 글에선 Windows 환경에서 anaconda를 설치해서 사용중인 상황을 가정하겠다. (아마도 파이썬을 처음 시작하는 사람들이 가장 자주 추천받는 환경일 가능성이 높으므로)

anaconda 가상환경에서 명령 프롬프트를 실행하는 가장 쉬운 방법은 위의 아이콘을 찾아 클릭하는 것이다. 만약 안보인다면 cmd를 입력하여 일단 명령 프롬프트로 진입하자.

현재 내 anaconda가 어디에 설치되어있는지 잘 알고 있다면, 다행이지만 그렇지 않다면 위치부터 찾아야한다. 윈도우에선 where 라는 명령어로 찾는다. 다음과 같이 검색해보자.

where /R C:\ anaconda

필자같은 경우엔 C:\Users\uniquness\anaconda3 에 해당 패키지들이 있음을 알 수 있다. 저 anaconda 가상환경을 활성화 시키고 싶다면, Scripts\activate.bat 파일을 실행시키면 된다.

위와같이 맨 앞에 괄호( ) 가 생기면 가상환경이 활성화 되었다는 뜻이다. 이 환경에서 사용중인 python 위치를 확인해보기위해 where python을 해보면

잉? 분명 가상환경에서 사용하는 python은 특정 하나일텐데 2개가 검색되어 나온다. 이건 윈도우10만의 특징인데 "앱 실행 별칭 관리"라는 것때문에 그렇다. 사람 헷갈리게하니 검색창에서 "앱 실행 별칭 관리"에 들어가 python과 관련된 항목을 모두 off 시켜주자.

이제 다시 명령 프롬프트로 돌아와서 where python 을 해보면

이제 정상적으로 하나만 보임을 알 수 있다. 저게 현재 상황에서 사용하는 python 파일의 위치이다. 이 때 이 python이 활용하는 모듈들은 모두 위 경로의 하위 폴더에 생긴다.

pip, conda 모두 Scripts 폴더에 있음을 알 수 있다.

위 환경에서 conda install, pip install로 설치되는 패키지들은 모두 C:\Users\uniquness\anaconda3 하위 폴더에 설치되며, C:\Users\uniquness\anaconda3\python.exe로 파이썬을 실행시킬 때만 불러올 수 있다. 그리고 이러한 구조는 모든 파이썬에 적용된다. (Mac이나 Linux에서도 마찬가지다.)

 

pip, conda, 패키지 파일들은 모두 파이썬 실행 파일 하위 폴더에 존재

여러버전의 파이썬을 설치하고, 여러 가상환경을 꾸려서 관리한다는 것은 위와같은 구조의 파이썬 실행파일과 하위 폴더 구조를 여러개 만들어서 활용한다는 것과 다르지 않다.

다시한번 요약하면 python의 가상환경은 저렇게 별도의 python 실행파일과 실행 파일 하위 폴더의 모듈들 단위로 묶여서 관리되기 때문에 특히나 여러 버전을 따로 설치하여 관리할 때는 현재 사용중인 python, 그리고 패키지 설치 프로그램인 conda나 pip의 위치를 잘 파악하는 것이 중요하다. conda install, pip install을 통해 패키지를 설치했는데도 import 에러가 뜬다면 현재 사용 중인 conda, pip, python 파일의 위치부터 확인하는게 제일 우선이다.

이것만 잘 기억한다면 경로가 꼬여서 생기는 문제의 99%는 해결된다.