moo-nerim

jupyter에서 no module named 'tensorflow' 에러 해결방법 (python 경로 변경) 본문

에러 해결🛠️

jupyter에서 no module named 'tensorflow' 에러 해결방법 (python 경로 변경)

무네림 2022. 4. 28. 13:23

Anaconda Prompt에서 conda install tensorflow 혹은 pip install tensorflow를 설치한 뒤, 프롬포트에서 python 입력 후

 

>>> import tensorflow as tf 
>>> tf.__version__

를 통해 확인했을 때 tensorflow 가 정상적으로 설치되어서 버전이 출력되는 걸 확인할 수 있습니다.

 

하지만, jupyter notebook을 실행한 뒤 tensorflow를 실행했을 때 No module name 'tensorflow' 와 같은 오류가 발생했습니다.. ಥ_ಥ

구글링을 통해 여러 블로그에서 알려준 방법대로 수행했지만, 똑같이 오류가 발생하여 해결되지 않았습니다.

시도한 방법은 아래와 같습니다.

 

1) Anaconda 삭제 후 재설치

2) 가상환경 삭제 후, 재생성

3) python3 -m ipykernel install --user

 

stackoverflow에서 찾은 내용과 제가 수행하면서 알아낸 해결방법을 설명해드리겠습니다. 여러 방법들을 다 수행했음에도 오류가 생기는 거라면 Python에 접근한 경로가 달라서 생긴 오류인지 의심해볼 필요가 있습니다!

 

먼저, Anaconda Prompt에서 생성한 가상환경을 acitvate nerim(가상환경 이름) 과 같이 활성화를 해준 뒤에, python 입력 후 아래와 같이 입력해 Python으로 접근하는 경로를 찾아봅니다.

>>> import sys
>>> print(sys.executable)

저의 경우에는 D:\nerim\Anaconda3\envs\nerim\python.exe 경로로 접근하고 있습니다.

 

이제, jupyter notebook을 실행시켜 동일한 방법으로 접근 경로를 확인합니다.

Jupyter notebook에서 접근하는 경로는 D:\nerim\Anaconda3\python.exe 입니다.

 

지금 두개의 경로를 비교해보면 서로 다른 것을 확인할 수 있습니다. Jupyter notebook은 tensorflow 모듈이 설치된 경로를 가리키고 있지 않기 때문에 tensorflow에 접근하지 못하고 있는 겁니다.

 

해당 경로를 변경해주기 위해 jupyter kernelspec list를 통해 사용할 수 있는 커널을 확인합니다.

D:\nerim\Anaconda3\share\jupyter\kernels\python3 의 경로로 이동하여 python3 폴더에 저장된 kernel.json 파일을 실행합니다. 

"argv": [
  "D:/nerim/Anaconda3/envs/nerim\\python.exe", # 경로 수정
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "Python 3 (ipykernel)",
 "language": "python",
 "metadata": {
  "debugger": true
 }
}

주석으로 # 경로 수정이라고 되어 있는 2번째 줄에 Anaconda prompt에서 확인했던 경로인 D:\nerim\Anaconda3\envs\nerim\python.exe  로 경로를 수정합니다. 

경로 수정이 끝나면 저장을 한 뒤에, 변경된 경로로 인해 No module named 'ipykernel_launcher' 다음과 같은 오류가 생긴다면 기존에 설치했던 것과 동일하게 pip install ipykernel 로 설치를 진행하면 됩니다. (가상환경 활성화된 상태)

 

jupyter notebook을 다시 실행하고 텐서플로우 버전을 확인하면 다음과 같이 정상적으로 출력된 것을 확인할 수 있습니다.

 

저와 동일한 오류를 겪으신다면 위 방법으로 한번 시도해보세요!! 감사합니다 😄

반응형
Comments