pip install selenium 했는데 pyCharm에서 Unresolved reference 'selenium'

얼레벌레·2023년 8월 18일

에러

목록 보기
1/1

(환경 : macOS Ventura 13.4.1 / pip 23.2.1 / python 3.11)

내가 분명 터미널에서

pip install selenium

을 했다.

그러고나서 pyCharm에서 selenium을 import했는데 에러가 뜨는 것이다.

selenium을 알아듣지 못한다라...왜 selenium을 인식하지 못하는 걸까?

pip로 설치한 패키지들이 어디 설치되는지 궁금했다.
찾아보니 아래 명령어로 sys.path를 확인할 수 있는 것 같았다.

python3 -m site

실행하면 아래와 같은 결과가 뜬다.

sys.path = [
    '/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11',
    '/Library/Frameworks/Python.framework/Versions/3.11/lib/python311.zip',
    '/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/lib-dynload',
    '/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages',
]
USER_BASE: '/Users/{username}/Library/Python/3.11' (doesn't exist)
USER_SITE: '/Users/{username}/Library/Python/3.11/lib/python/site-packages' (doesn't exist)
ENABLE_USER_SITE: True

doesn't exist는 왜 뜨는지 모르겠다....

하여튼 내가 sys.path를 찾은 이유는 공식 홈페이지에 의하면 sys.path라는 변수에 있는 디렉토리들에서 모듈을 찾는 것 같기 때문이다.

<< 직역 (구글번역의 도움을 받았다,,) >>
spam이라는 모듈이 import될 때, interpreter는 가장 먼저 built-in 모듈 중에 그런 이름이 있는지 찾아본다.
이 모듈 이름들은 sys.builtin_module_names에 나와있다.
만약 거기 없다면, sys.path 변수에 있는 디렉토리 목록에서 spam.py라는 파일을 찾아본다.
sys.path는 아래 위치로부터 초기화된다.
- input script를 포함하는 디렉토리 (혹은 file이 특정되지 않다면 현재 디렉토리)
- PYTHONPATH (shell 변수인 PATH 와 동일한 syntax를 사용하는 디렉토리 이름 목록)
- installation-dependent default (site 모듈이 처리하는 site-packages 디렉토리를 포함하는 관례에 따라)

사실 위 공식 문서 내용이 기억 안나서 sys.path에 있는 디렉토리에 하나하나 다 들어가서 selenium이 있는지 확인해봤다.
그랬더니 /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages 디렉토리에 여기에 selenium 폴더가 있는 것을 확인했다.

그래서 아...설치됐구나
가 아니라 왜 pyCharm에서는 이걸 인식을 못하는 걸까?

프로젝트 setting창을 확인해 보았다.

사실 이건 여러개 깔다가 여러개가 깔렸는데....하여튼 처음엔 이렇게 selenium이 없었다.!
뭔가 여기에 selenium이 있어야 인식될 것 같은데...
그래서 pyCharm 자체의 터미널(?)에서 selenium을 설치해 보았다.

잘 설치되었다고 뜬다.
다시 settings를 확인해 본다.

selenium이 생겼다.


에러도 뜨지 않는다.

당장 빨간줄은 해결했지만...

python도 global로 설치되는 것과 프로젝트 로컬에 설치되는 것이 다른 걸까?


python도 global로 설치되는 것과 프로젝트 로컬에 설치되는 것이 다른 걸까?

전체 터미널에서 pip install selenium을 한 상태에서
python IDLE에서 아래와 같이 selenium import 후 무작정 selenium을 입력해봤다.

selenium의 위치가 나온다. 모듈을 잘 찾는다는 증거이지 않나 싶다.
그리고 전체 터미널에서 pip uninstall selenium을 하고
python IDLE에서 똑같이 해봤다.

import부터 안된다. ModuleNotFoundError가 뜬다.

그리고 전체 터미널에서 pip uninstall selenium을 한 상태 + pyCharm에서는 pip install selenium한 상태에서는
pyCharm에서 에러가 안 뜬다. = pyCharm에서 selenium 모듈을 찾는다.

반대로 전체 터미널에서 pip install selenium을 한 상태 + pyCharm에서는 pip uninstall selenium한 상태에서는
pyCharm에서 에러가 뜬다. = pyCharm에서 selenium 모듈을 못 찾는다.

나의 결론

  • 전체 터미널에서 pip install 하는 것과 pyCharm 터미널에서 pip install하는 것은 각각 다른 위치에 라이브러리가 저장된다.
    • 전체 터미널에서 pip install 하면 -> site-packages 디렉토리에 저장 (/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages) -> python IDLE에서 import 가능
    • pyCharm 터미널에서 pip install 하면 -> 해당 프로젝트의 site-packages 디렉토리에 저장 ({Project 위치}/venv/lib/python3.11/site-packages) -> pyCharm IDE에서 import 가능

레퍼런스
Python Pip 패키지는 어디에 저장되는가? - https://webisfree.com/2017-11-09/python-pip-%ED%8C%A8%ED%82%A4%EC%A7%80%EB%8A%94-%EC%96%B4%EB%94%94%EC%97%90-%EC%A0%80%EC%9E%A5%EB%90%98%EB%8A%94%EA%B0%80

python 공식 doc - https://docs.python.org/3/tutorial/modules.html

profile
뭐라도 하면 뭐라도 되어있겠지...

0개의 댓글