Eatchu space/삽질기록

기존에 설치된 module이 갑자기 import Error가 날때 해결법 (Window, Linux) 및 jupyter notebook kernel 추가하기

eatchu 2021. 7. 1. 21:09
반응형

스토리텔링이 있어야 각자에게 맞는 오류를 찾을 수 있을 것 같아

오늘 나에게 일어난 일과 함께 해결법을 몇개 적어보려고 한다

 

일단 오늘 오후부터 갑자기 시작된 ModuleFoundError : No module named "numpy"로 인해 남은 하루를 다써버렸고.. 

나는 주로 분석 환경이 갖추어져 있는곳에서 작업을 했고 오류가 생기면 즉각 윗사람에게 물어보는

문제해결의 능력 저하를 보여주며 살았기 때문에 참으로 난감한 하루였다^^

 

Mac을 사용했기 때문에 Linux 명령어 기준으로 글을 작성했지만

명령어만 수정해주면 방법은 똑같이 적용이 가능하니

window 명령어는 구글링을 통해 찾아보면 좋을 것 같다

 

 

먼저 첫 시도는 버전 설정이었다

1. python버전에 맞는 numpy가 설치 되지 않았을 경우

라는 가정하에 현재 python버전에 맞는 numpy를 새로 설치했다

# 다음 중 하나를 사용하여 패키지를 설치
$ python -m pip install numpy
$ python3 -m pip install numpy

여전히 error가 떴다

pip upgrade를 하라고해서 upgrade함

# pip upgrade
$ pip install --upgrade pip
# 재시도
$ python3 -m pip install numpy

했더니 terminal에서는 실행이 된다

하지만 여전히 jupyter에서는 실행이 안된다

(이때부터 이상하다는걸 눈치챘어야 했는데 컴알못이라 눈치 못챘다)

 

 

2. conda로 설치해볼까

이전에 prophet패키지를 설치할때 pip로는 안되던게 conda로 설치하니 성공한 기억이 있어서

conda를 사용해 설치를 시도해봤다 

$ conda install -c conda-forge numpy
# RemoveError: 'setuptools' is a dependency of conda and cannot be removed from conda's operating environment.
$ conda update --force conda
# Permission denied

conda update하라고 해서 update 시켰는데 권한 오류가 뜸

해결해볼까 했지만 갑자기 현기증이 와서 포기.

 

낮잠 때리고 저녁에 다시 맑은 정신으로 컴퓨터를 켰다

정신이 맑아지니 오늘 꼭 해결을 해야겠다는 의지가 생김

 

numpy뿐 아니라 기존에 pandas, sklearn, torch, tensorflow 등등 자주 사용하는 함수를 import 해봤다

전부 모조리 error

numpy가 이상한게 아니란걸 깨달음

 

 

3. terminal과 jupyter의 파이썬 실행 경로가 다름 - 해결

그래서 각자 실행되고 있는 파이썬의 경로를 확인해봤다

# terminal
# python3 실행
>> import sys
>> print(sys.executable)

# jupyter
import sys
print(sys.executable)

위의 방법으로 확인해 볼 수 있음

결과는 역시 두개의 경로가 다르게 나왔고

터미널에서는 기존에 사용하던 함수들이 정상적으로 가동됐다

 

 

이제 터미널에서 사용되던 파이썬 경로를 주피터 커널에 연결할것

#jupyter kernel list 확인
$ jupyter kernelspec list 

현재 주피터에 연결되어 있는 파이썬 커널이 뜬다

python3    /Users/xxxx/opt/anaconda3/share/jupyter/kernels/python3

여기에 나는 terminal에서 사용되는 가상환경을 커널에 추가할것임

# 활성화 되어있는 가상환경 확인
# window라면 conda info -env
$ conda info -e 

내가 추가할 가상환경을 확인한다

# conda environments:

#

base                  *  /Users/xxxx/opt/anaconda3

나는 가상환경이 한개밖에 없어 활성화되어있기 때문에 그냥 저걸 추가하면된다

다른 가상환경을 추가할거라면 해당 가상환경을 activate시키고 추가해야한다

# ipykernel 설치
$ pip install ipykernel
# kernel 추가
$ python -m ipykernel install --user --name base --display-name"xxxx"
python -m ipykernel install --user --name [가상환경 이름] --display-name"[사용자가 설정하는 커널 이름]" 

커널을 추가해줬다

 

다시 jupyter kernelspec list 사용해서 추가된 커널을 확인한다

  base       /Users/xxxx/Library/Jupyter/kernels/base
  python3    /Users/xxxx/opt/anaconda3/share/jupyter/kernels/python3

base의 커널이 추가되었다

jupyter에서 확인하면 내가 설정한 "xxxx"의 이름으로 커널이 추가되어 있는 것을 볼 수 있다

 

해당 커널로 python을 열고 함수를 import하면....

드디어 성공 !!! !!! !!!

컴퓨터에 대한 부족한 지식과 부족한 정보력으로 여기까지 끌고 왔지만..

혹여 나같은 사람이 있다면! 좀 더 빠르게 해결하고 시간을 아꼈음 하는 바람에 열심히 적어보았다

반응형