티스토리 뷰

pip install pymongo # flask package 설치

ModuleNotFoundError

 

분명히 패키지를 설치했음에도 ModuleNotFoundError가 발생했습니다.

왜 그런지 알기위해 이것저것 알아본 결과를 말씀드리겠습니다.

 

원인

pip 가 가르키는 python version 문제 였습니다.

pip --version # pip version 확인

pip --version

python -m pip --version # python 명령어를 통한 pip 실행

python -m pip --version

python --version # python version

python --version

 

python3.8 --version # python3.8 version확인

python3.8 --version

이제 감이 오시나요? 'python -m'을 앞에 명시 함으로서 pip의 대상 python version을 명시할 수 있습니다.

 

응용

그럼 역으로 생각해보죠. 'pip --version' 에서 가르키는 python version으로 프로그램을 실행시키면 정상적으로 동작하지 않을까요? pip는 python3.8을 가르키고 있으니 python3.8app.py를 실행하면 설치된 패키지를 사용할 수 있을것으로 기대됩니다.

python3.8 app.py # python3.8 version으로 app.py 실행

정상 실행

역시나 해당 version에서는 설치된 패키지를 참조할 수 있어 정상적으로 실행되네요.

그럼 python version에 따라 package 설치 경로가 다를것으로 예상됩니다. 알아보겠습니다.

 

설치된 package 위치 확인

pip show pymongo # pymongo 정보 확인

Package Location

그럼 python -m 으로 설치된 패키지 위치도 보겠습니다. 예상되시죠?

python -m pip show pymongo

Package Location

역시나 설치 위치도 다릅니다.

 

결론

pip 뿐만 아니라 다른 모듈을 사용시에도 python -m <module>로 사용하는 것이 파이썬에서도 권장하는 방법입니다.

version문제를 겪지 않기위해서는 해당 명령어로 실행하는것을 습관들이시면 좋을것 같습니다.

 

 

참고자료

https://stackoverflow.com/questions/25749621/whats-the-difference-between-pip-install-and-python-m-pip-install

 

What's the difference between "pip install" and "python -m pip install"?

I have a local version of Python 3.4.1 and I can run python -m pip install, but I'm unable to find the pip binary to run pip install. What's the difference between these two?

stackoverflow.com

https://towardsdatascience.com/fix-modulenotfounderror-sklearn-99db60ed5d

 

How To Fix ModuleNotFoundError: No module named ‘sklearn’

Understanding how to properly install and import scikit-learn in Python

towardsdatascience.com

https://stackoverflow.com/questions/29980798/where-does-pip-install-its-packages

 

Where does pip install its packages?

I activated a virtualenv which has pip installed. I did pip3 install Django==1.8 and Django successfully downloaded. Now, I want to open up the Django folder. Where is the folder located? Normally...

stackoverflow.com

 

댓글