문제 발생
scikit-learn, seaborn, graphviz만 설치된 가상환경을 아나콘다로 새로 생성.
vscode에서 작업 후, mark-down으로 ML 학습을 정리하려 jupyter notebook을 열어 실행결과를 확인하려는데, scikit module을 찾을 수 없다는 ModuleNotFoundError: No module named 'sklearn' 에러가 발생.
이를 해결하기 위해 구글링 후, jupyter notebook에 원하는 가상환경을 연결하는 방법을 찾아서 해결함.
이 포스팅은 해결 과정을 작성함.
본인의 환경
- macbook m1 macOS
- brew로 python 3.10.7 설치 (python 설치 경로: /opt/homebrew/bin/) (명령어: brew install python@3.10)
- conda로 python 3.10.6 가상환경 생성 (anaconda 설치 경로: /Users/{사용자 이름}/opt/anaconda3) (명령어: conda create -n "가상환경 이름" python=3.10.6)
Jupyter notebook에 원하는 가상환경 연결과정
1. 연결하려는 가상환경을 먼저 활성화한다.
conda activate ml
2. 연결하기를 원하는 가상환경의 라이브러리 중 pip list 명령어를 통해 jupyter notebook 라이브러리가 있는지 확인한다. (jupyter notebook의 라이브러리 이름은 notebook 이다.)
필자는 설치되어있지 않아서 가상환경에 jupyter notebook을 설치했다.
pip list
> 필자는 notebook 설치되지 않음.
pip install jupyter notebook
3. jupyter notebook 설치가 완료된 후, 아래의 코드를 연결하고자하는 가상환경을 활성화한 뒤 입력한다.
python -m ipykernel install --user --name 가상환경이름 --display-name "jupyter notebook에 보여질 이름"
ex) python -m ipykernel install --user --name ml --display-name "conda ml"
4. 명령어로 jupyter notebook을 입력해서 jupyter notebook의 커널에 입력한 가상환경이 들어가있는지 확인한다. (필자는 conda ml로 입력함)
* 참고: 가상환경을 jupyter notebook 커널에서 연결해제하는 명령어는 아래의 코드다.
jupyter kernelspec uninstall "삭제할 커널 이름(jupyter notebook에 보여질 이름으로 입력했던 이름)"
문제 해결
이후 anaconda로 생성한 가상환경(ml)이 jupyter notebook 커널로 잘 연결되었다.
그럼에도 불구하고 커널 연결이 되지 않은 분들은
1. jupyter notebook에서 실행 결과(jupyter notebook이 실행하는 python 경로)와
import sys
print(sys.path)
2. zsh 쉘에서 아래 코드를 순서대로 입력하여 나온 결과(가상환경이 실행하는 python 경로)를 비교해서,
conda activate 가상환경이름
(가상환경이름) python
>> import sys
>> print(sys.path)
python 경로를 확인 후, .zshrc 파일을 수정하여 환경변수 설정을 변경해보시길 바랍니다.