이전 포스팅과 더불어 Window10 환경임을 알려드립니다.


 Anaconda Prompt에서는 tensorflow가 import 되지만 Jupyter에서 No module named 'tensorflow' 에러가 뜨는것을 해결하고자 한다.



 Jupyter에서 tensorflow를 인식하지 못하고 No module named 'tensorflow'를 내뿜는 이 문제는 Jupyter과 tensorflow가 Python을 실행하기 위한 경로가 서로 다르기 때문이다. Python이 실행되고 있는 경로는 sys 라이브러리의 executable 변수를 확인하면 알 수 있다.

 내 컴퓨터를 기준으로 Jupyter에서 Python으로 접근하는 경로는 C:\ProgramData\Anaconda3\python.exe 이다.




 Anaconda Prompt에서 확인한 가상개발환경에서 Python으로 접근하는 경로는 C:\ProgramData\Anaconda3\envs\tensorflow\python.exe 이다.


(base) C:\Users\bbangko>activate tensorflow

(tensorflow) C:\Users\bbangko>python

Python 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:27:44) [MSC v.1900 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import sys

>>> print(sys.executable)

C:\ProgramData\Anaconda3\envs\tensorflow\python.exe

>>>



 Jupyter는 tensorflow 모듈에 접근하지 못하는 경로를 가리키고 있는 것을 확인 할 수 있다. 이 문제를 내가 이해한 것으로 그려보면 왼쪽의 그림과 같다. Jupyter가 Tensorflow 안에 있는 Python을 가리킬 수 있도록 해야한다. 그 방법은 Jupyter의 커널을 추가하는 것이다. virtualenv 커널 이라고 한다. 



 Jupyter의 커널을 추가하기 위해 Jupyter의 경로를 jupyter --path 명령어로 확인해보자. 


(tensorflow) C:\Users\bbangko>jupyter --path

config:

    C:\Users\bbangko\.jupyter

    c:\programdata\anaconda3\envs\tensorflow\etc\jupyter

    C:\ProgramData\jupyter

data:

    C:\Users\bbangko\AppData\Roaming\jupyter

    c:\programdata\anaconda3\envs\tensorflow\share\jupyter

    C:\ProgramData\jupyter

runtime:

    C:\Users\bbangko\AppData\Roaming\jupyter\runtime


 Jupyter의 데이터는 C:\Users\bbangko\AppData\Roaming\jupyter 여기에 있는것을 알 수 있다. 커널을 추가할 폴더를 만들도록 하자. (폴더 만들기 mkdir)


(tensorflow) C:\Users\bbangko>mkdir C:\Users\bbangko\AppData\Roaming\jupyter\kernels\tensorflow


 jupyter의 kernels 폴더에 kernels.json파일을 만들어준다. 메모장이나 notepad++ 사용


kernels.json

{

 "argv": [ "/ProgramData/Anaconda3/envs/tensorflow/python", "-m", "ipykernel", "-f", "{connection_file}"],

 "display_name": "tensorflow",

 "language": "python"


 argv 경로는 컴퓨터마다 다를 수 있으니 본인들 컴퓨터에서의 python 경로를 확인하자.


(tensorflow) C:\Users\bbangko>where python

C:\ProgramData\Anaconda3\envs\tensorflow\python.exe

C:\ProgramData\Anaconda3\python.exe


 이렇게 하고 Jupyter을 켜보면 New항목에 tensorflow라는 새로운 커널이 생긴 것이다. New -> Python 3로 하면 기존의 Python경로를 사용하는 파일이 생성됨


 

 tensorflow를 import해서 오류없이 출력되면 성공!




'잡 기술 > Tensorflow' 카테고리의 다른 글

[Tensorflow] Window에서 Tensorflow를 설치해보자  (0) 2018.08.04

 Tensorflow는 구글에서 개발한 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리이다. 제공되는 프로그래밍 언어로는 Python과 c++이 있는데 나는 Python을 쓰도록 하겠다.


내 노트북 스펙:

OS: Window10 (x64)

CPU: Intel(R) i5-6200U

GPU: NVIDIA GeForce 940M

RAM: 8GB



설치 순서참고: 괄호() 안에 있는 버젼은 내가 받은 버젼이다.


Step 0. GPU로 돌릴사람만!

 만약 GPU를 사용하여 Tensorflow를 돌려보고 싶다면 CUDA와 cuDnn을 받아야 한다. (CUDA-9.2.148-win10, cuDnn-9.2-win10-x64-v7.1)


CUDA 다운로드 링크: https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64

cuDnn 다운로드 링크: https://developer.nvidia.com/cudnn


CUDA는 실행파일을 받아서 깔면 되고, 

cuDnn은 압축을 풀어 bin, include, lib 폴더를 아래의 경로에 넣어준다


 “C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2”


Step 1. 아나콘다(Anaconda)를 깔자


 다운로드 링크: https://www.anaconda.com/download/


 위의 다운로드 링크로 가서 .exe파일 (Anaconda3-5.2.0)을 받아 설치를 한다. 아나콘다를 설치하면 알아서 Python (Python 3.6.5)이 깔리므로 따로 안받아도 된다. 


 

Anaconda가 설치 되었으면 시작메뉴에서 Anaconda Prompt를 실행하여 Python을 쳐보자. 


(base) C:\Users\bbangko>python

Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.    

>>>           


이렇게 >>> 모양이 뜨면 정상적으로 Python이 설치가 된 것이다.


Step 2. 텐서플로우(tensorflow)를 깔자


 아나콘다 안에서 가상개발환경을 만들어주고, 그 안에 텐서플로우를 깔아야 한다. CPU버젼과 GPU버젼을 따로 설치하고 싶다면 -gpu를 추가해서 구분 지어줍시다.


conda create -n tensorflow python=3.6 

conda create -n tensorflow-gpu python=3.6


 이렇게 하면 가상개발환경 폴더가 만들어진다. 해당 개발환경을 활성화 시키기 위해서는 activate 개발환경이름 명령어를 사용하면 된다.


그러면 각각의 가상개발환경 안에 tensorflow를 깔아주자.


CPU용 Tensorflow

(base) C:\Users\bbangko>activate tensorflow

(tensorflow) C:\Users\bbangko>pip3 install --ignore-installed --upgrade tensorflow



GPU용 Tensorflow

(tensorflow) C:\Users\bbangko>activate tensorflow-gpu

(tensorflow-gpu) C:\Users\bbangko>pip3 install --ignore-installed --upgrade tensorflow-gpu 



Step 3. Tensorflow를 테스트 해보자


 먼저 CPU용 Tensorflow부터 테스트 해봅시다. 아래 코드를 따라 쳤을때 오류 없이 출력이 된다면 성공!


(base) C:\Users\bbangko>activate tensorflow

(tensorflow) C:\Users\bbangko>python

Python 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:27:44) [MSC v.1900 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import tensorflow as tf

>>> hello=tf.constant("Hello Wolrd!")

>>> sess=tf.Session()

2018-08-04 19:43:46.857283: I T:\src\github\tensorflow\tensorflow\core\platform\cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2

>>> print(sess.run(hello))

b'Hello Wolrd!'

>>>


python에서 cmd명령으로 나가려면 Ctrl+Z 인터럽트를 걸어줍시다


 다음 GPU


(tensorflow) C:\Users\bbangko>activate tensorflow-gpu

(tensorflow-gpu) C:\Users\bbangko>python

Python 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:27:44) [MSC v.1900 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import tensorflow as tf

>>> hello=tf.constant("Hello Wolrd!")

>>> sess=tf.Session()

                                                                                     ...

Found device 0 with properties:

name: GeForce 940M major: 5 minor: 0 memoryClockRate(GHz): 1.176

                                                                                     ...

>>> print(sess.run(hello))

b'Hello Wolrd!'

>>>

 

 메세지 중간에 GPU이름이 뜨면서 잘 작동하는 것을 확인하면 성공!


Step 4. 쥬피터(Jupyter)도 써봅시다.


 코딩할때 콘솔창에 한줄 한줄 쓸 수는 없잖슴? 코드를 이쁘게 파일로 관리하기 위해 Jupyter라는걸 써야한다. 다행이도 Anaconda를 설치하면 Jupyter도 같이 깔리니 참으로 다행이다. Jupyter를 실행하는 명령어는 jupyter notebook 이다.


(base) C:\Users\bbangko>activate tensorflow

(tensorflow) C:\Users\bbangko>jupyter notebook

[I 19:59:38.379 NotebookApp] JupyterLab beta preview extension loaded from C:\ProgramData\Anaconda3\lib\site-packages\jupyterlab

[I 19:59:38.380 NotebookApp] JupyterLab application directory is C:\ProgramData\Anaconda3\share\jupyter\lab

[I 19:59:38.847 NotebookApp] Serving notebooks from local directory: C:\Users\bbangko

[I 19:59:38.847 NotebookApp] 0 active kernels

[I 19:59:38.848 NotebookApp] The Jupyter Notebook is running at:

[I 19:59:38.848 NotebookApp] http://localhost:8888/?token=faf573e56c15b7568c52adf8c192727bce39e0c957152cba

[I 19:59:38.848 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

[C 19:59:38.851 NotebookApp]


    Copy/paste this URL into your browser when you connect for the first time,

    to login with a token:

        http://localhost:8888/?token=faf573e56c15b7568c52adf8c192727bce39e0c957152cba&token=faf573e56c15b7568c52adf8c192727bce39e0c957152cba

[I 19:59:39.914 NotebookApp] Accepting one-time-token-authenticated connection from ::1


 아래를 보면 로그인 토큰도 던져주는데 기본브라우저가 아닌 크롬에서 작업하고 싶다면 토큰을 크롬의 주소창에 복붙하면 된다. 그리하면 아름다운 UI의 Jupyter가 뜰것이다. 



 우측상단의 new를 눌러 앞으로 코딩 작업을 할 폴더(Folder) workspace를 만들어줍시다. (경로는 님들 마음대로) 그리고 python코드를 작성할 파일 .ipynb 을 new->Python3를 눌러 생성해보자. 




 in [ ] : 블록 안에 tensorflow를 import해주는 코드를 작성해보자. 그러면 아래와 같은 에러메세지가 뜨게 될것이다. 뜨지 않으면 땡큐하고 그냥 쓰면 된다. 이 에러를 해결하기 위한 포스트는 다음글을 참고하길 바란다.



 이제 신나게 코딩 해봅시다. 화이팅!


+ Recent posts