문제
Python에서 웹 크롤링을 사용하기 위해 beautifulsoup4를 가상 환경에 분명 설치했다고 생각했는데 오류가 발생했다.
BS4가 Import되지 않는다.
- Import "bs4" could not be resolved from source pylance(reportMissingModuleSource)
삽질
아래 명령어로 BS4를 다시 설치해보았다.
pip install bs4
pip install beautifulsoup4
아래와 같이 이미 설치되어 있다고 나타난다.
그러나 뭔가 이상하다. 표시된 경로는 현재 작업중인 프로젝트의 경로와 다르다.
VSCode를 재실행했으나 문제는 동일하게 발생.
강제 재설치를 진행해보았다.
pip install --upgrade --force-reinstall beautifulsoup4
문제가 해결되지 않아 가상 환경을 다시 구성해보기로 했다.
프로젝트 폴더에서 가상 환경 폴더를 제거한 뒤 다시 새로 가상 환경을 생성한 후 필요한 라이브러리를 다시 설치해 주었다.
python3 -m venv venv
pip install bs4 flask 등등
위 방법으로 다행히 라이브러리 설치 경로 문제는 해결되었다.
그러나 문제가 더 늘어났다. 잘 동작하던 라이브러리들도 Import되지 않는 문제가 발생했다.
이쯤되니 다른 근본적인 문제가 있는 것 같다는 생각이 들기 시작했다.
해결
https://github.com/microsoft/pyright/blob/main/docs/configuration.md#reportMissingModuleSource
위 문서에서
“reportMissingModuleSource” 에 대한 설명을 찾아본 결과 아래와 같은 설명을 찾을 수 있었다.
reportMissingModuleSource [boolean or string, optional]: Generate or suppress diagnostics for imports that have no corresponding source file. This happens when a type stub is found, but the module source file was not found, indicating that the code may fail at runtime when using this execution environment. Type checking will be done using the type stub. The default value for this setting is
“warning"
.
문제인 것은 알겠는데 이 설명으로는 해결 방법을 알기 어려웠다.
구글링을 조금 더 진행해보니 이 오류는 라이브러리가 설치되지 않았을때 발생하는 오류이지만, 컴퓨터에 여러개의 파이썬 버전이 설치되어 있을 경우에도 나타날 수 있다고 한다.
라이브러리가 다른 파이썬 버전에 설치된 것이라고 한다. 인터프리터를 올바르게 선택하면 된다고 하는데, 올바르게 선택되어 있는 것을 다시 한번 확인했다.
혹시나 싶은 마음에 아래에 있는 Python 3.9.6 로 변경해서 선택해봤으나, 문제는 해결되지 않았다. 멍청한 짓을 했다 싶어 다시 원래대로 가상 환경으로 변경했는데 갑자기 문제가 허무하게 해결되었다.
아무래도 인터프리터가 잘못 설정되어 있던 것 같다.
배운 것
최근 Python 3.8.2을 사용하다가 3.8.6을 새로 설치했다.
더 높은 버전을 설치하면 자연스럽게 업데이트 될 것이라 생각하고 그냥 인스톨 했었는데, 이게 원인이였던 것 같다.
가상 환경을 재설정하기 전에는 이전 버전의 파이썬으로 잘 동작했지만, 새로 설치한 BS4는 새로 설치한 파이썬 버전으로 설치되어 경로를 찾을 수 없었던 것이 아닐까 싶다.
가상 환경을 새로 생성한 후에는 인터프리터는 여전히 3.8.2로 설정되어 있었을 것이다. 표기만 3.8.6이였을 뿐, 그래서 새로 설치한 라이브러리들이 모두 문제를 일으켰던 것 같다.
결론
새로운 파이썬 버전을 설치한 경우 라이브러리 호환성을 확인해야하며, 필요한 경우 가상 환경을 새로 구성해야한다. 가상 환경을 새로 생성한 후에는 반드시 인터프리터도 재설정해주어야 한다.
'Develop > TIL' 카테고리의 다른 글
자바스크립트 알고리즘 문제 풀이 주차 회고 (0) | 2023.04.21 |
---|---|
자바스크립트 입문 2주차 회고 (0) | 2023.04.13 |
자바스크립트 입문 1주차 회고 (0) | 2023.04.09 |
eb init no such file or directory 오류가 발생하는 문제 (0) | 2023.03.25 |
Python에서 MongoDB ‘_id’ 활용하기 (0) | 2023.03.22 |