2017/01/12

윈도우즈(Windows)용 텐서플로우(TensorFlow) 설치 방법 // 파이썬(Python) 3.5, 아나콘다(Anaconda)

0. 들어가며

윈도우즈에 아나콘다 배포판을 이용해서 파이썬을 설치하고, pip로 윈도우즈용 텐서플로우를 설치하는 과정을 다뤘습니다.

pip 로 텐서플로우 설치시 발생하는 오류( Cannot remove entries from nonexistent file c:\program files\anaconda3\lib\site-packages\easy-install.pth )와
그 결과로 파이썬에서 텐서플로우가 임포트되지 않는 현상( ImportError: No module named 'tensorflow' )에 대한 언급도 포함되어 있습니다.

본문은, 여친이 음스므로 음슴체


1. 구동 환경

텐서플로우(TensorFlow)는 초기에 리눅스(Linux)나 맥(Mac) OS X 환경만 지원하여,
윈도우즈(Windows)에서는 가상 환경 등을 이용해서만 구동 가능했던 것 같으나
텐서플로우 r0.12 버전부터는 윈도우즈 버전도 지원을 시작함

* 이 글에서는 윈도우즈 7 (64비트)에 설치를 진행하였습니다.


텐서플로우는 주로(?) 파이썬(python)과 연계해서 사용하며,
윈도우즈용 텐서플로우는 파이썬 버전 3.5 이상(64비트만)에서만 구동 가능함

* 파이썬은 현재 2 버전과 3 버전에서 약간의 문법 차이가 존재하고, 두 종류의 버전이 병행해서 업데이트가 되고 있는 걸로... -.-a


2. 파이썬 설치 → 아나콘다 배포판 이용

파이썬을 본격적으로 이용하기 위해서는 여러 패키지들을 필수적으로 설치해야 하는데,
오픈소스에서 빈번하게 나타나는 버전 간 호환성 문제나 상호 의존성 등을 전부다 확인해가면서 필수 패키지들을 설치하기에는 시간 낭비 -.-a 가 너무 심하므로
파이썬과 필수 패키지들을 한꺼번에 간단히 설치할 수 있는 배포판을 이용하는 것이 정신적, 육체적 건강을 위해서 매우 권장됨

파이썬 배포판 중에서도 아나콘다( https://www.continuum.io/downloads )를 많이들 추천하는 듯 하여 그것을 이용함

* 개인용 컴퓨터에 처음으로 설치할 때는 이 방법이 편하지만, 기존에 쓰던 파이썬 개발환경에 텐서플로우를 합쳐야 한다거나 시스템을 다른 사람들과 공동으로 사용해야 하는 상황이라면 얘기가 약간 달라집니다. ^^;;


2-1. 아나콘다 배포판 설치

아래의 다운로드 사이트에서 파이썬(Python) 3.5 버전 중에 64비트를 다운로드하여 설치 진행

https://www.continuum.io/downloads#windows

*** 2017년 2월 28일 내용 추가 ***

본 포스팅을 작성한 후에 아나콘다 버전이 업그레이드 되어서, 위 링크에서는 파이썬 3.6 버전이 포함된 아나콘다가 기본으로 다운로드 되는 것 같습니다. ^^a

아래 링크를 참고하여 파이썬 및 아나콘다 버전에 주의해서 설치를 진행하시기 바랍니다.

https://docs.continuum.io/anaconda/oldpkglists.html
https://docs.continuum.io/anaconda/pkg-docs
https://docs.continuum.io/anaconda/old-pkg-lists/4.2.0/py35
https://repo.continuum.io/archive/.winzip/


3. 텐서플로우 설치

아나콘다를 설치하면 자동으로 설치되는 패키지 매니저인 pip 를 이용하여 텐서플로우를 설치함


3-1. pip 설치 확인

윈도우즈 7 기준으로,
윈도우즈 실행 창에 (단축키는 윈도우즈키 + R) cmd 명령어로 윈도우즈 콘솔 창을 열고,
pip --version 으로 pip 설치 여부 및 버전 확인


pip 설치 여부 및 버전 확인
pip 설치 여부 및 버전 확인



(참고) pip 업그레이드 방법
아나콘다에 포함되어 있는 pip 을 (별도로) 최신 버전으로 업그레이드 하려면,
python -m pip install --upgrade pip 를 콘솔에서 실행하면 됨


pip 업그레이드
pip 업그레이드


3-2. msvcp140.dll 파일 필수

텐서플로우 설치 가이드에 따르면, 텐서플로우 실행에는 msvcp140.dll 파일이 필요하며, 해당 dll 파일이 없으면 파이썬에서 텐서플로우를 임포트할 때 모듈이 없다거나, DLL 파일 로딩을 실패했다는 에러가 뜬다고 함

아래의 사이트에서 마이크로소프트(Microsoft)의 Visual C++ 2015 재배포 가능(redistributable) 패키지 Update 3 를 64비트 버전으로 설치

https://www.microsoft.com/en-us/download/details.aspx?id=53587

뭔가 윈도우즈 시스템에 영향이 있을만한 걸 설치했으니, 윈도우즈를 재부팅 한 번 해주는 것도 좋을 듯

참고로, msvcp140.dll 파일은 C:\Windows\System32 에 설치되는 듯 함 (아닐수도 있음. 헤헤)


3-3. pip로 텐서플로우 설치

cmd 로 콘솔창을 열어서 텐서플로우 설치 가이드에 있는 대로 설치 명령어 입력

텐서플로우는 CPU-only 버전과 GPU 버전이 있으며, 여기서는 CPU-only 버전으로 진행함

CPU-only version 설치는 요렇게

C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-0.12.1-cp35-cp35m-win_amd64.whl


참고로, GPU version 설치는 요렇게

C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-0.12.1-cp35-cp35m-win_amd64.whl

* 제가 쓴 컴은 내장 그래픽이라 CPU 버전을 설치했지만, 그래픽카드를 이용하는(?) GPU 버전이 좋은 성능을 보여준다고 하는 것 같습니다. -.-a


3-4. pip 설치 오류시 대응

pip로 텐서플로우를 설치할 때 다음과 같은 에러(?)가 나면서 설치가 중단 되는(?) 현상이 나타남

Cannot remove entries from nonexistent file c:\program files\anaconda3\lib\site-packages\easy-install.pth

아래 첨부 이미지의 빨간 메시지 참고.

Cannot remove entries from nonexistent file c:\program files\anaconda3\lib\site-packages\easy-install.pth
Cannot remove entries from nonexistent file c:\program files\anaconda3\lib\site-packages\easy-install.pth


아마도, 설치 스크립트(?)에 특정 파일 내용 중 일부를 삭제하는 명령이 있는데, 파일이 존재하지 않는다는 에러를 뱉고 설치를 멈춰버리는 듯 -.-a

이런 상황이 발생한 경우에는 당황하지 말고 pip 으로 텐서플로우를 다시 설치 진행하면 됨. 이 상태는 텐서플로우의 설치가 다 끝난 것이 아니기 때문

3-3 에서 사용했던 명령어를 다시 입력하거나, pip install tensorflow 를 입력하면 됨. 성공적으로 설치를 마쳤다는 메시지가 떠야 설치가 완료된 것임


3-5. 텐서플로우 설치 확인

아나콘다(Anaconda)를 설치할 때 함께 설치된 IDE(?)인 스파이더(Spyder)를 실행해서,
우측 하단에 있는 콘솔(IPython console) 창에서 아래 명령어로 텐서플로우 임포트 테스트

import tensorflow as tf


스파이더(Spyder) - ImportError: No module named 'tensorflow'
스파이더(Spyder) - ImportError: No module named 'tensorflow'


다음과 같은 에러가 발생하면서 임포트를 실패했는데,

Traceback (most recent call last):

  File "<ipython-input-1-41389fad42b5>", line 1, in <module>
    import tensorflow as tf

ImportError: No module named 'tensorflow'

원인은 앞서 3-4에서 설명했듯이, 텐서플로우 설치가 중단된 것을 모르고 '다 된 건가~' 하고 그냥 넘어가서 그런 것임. 성공적으로 설치를 마쳤다는 메시지가 뜨기 전까지는 설치가 끝난 게 아님.



(참고) 텐서플로우 설치 경로 확인 방법

스파이더(Spyder) 콘솔 창에 아래 코드를 입력하고 엔터

import os; import inspect; import tensorflow;
print(os.path.dirname(inspect.getfile(tensorflow)))

다음과 같은 형태로 설치 경로가 출력됨

C:\Program Files\Anaconda3\lib\site-packages\tensorflow


4. 텐서플로우 구동 테스트

드디어 텐서플로우를 본격적으로 구동!


4-1. 텐서플로우 예제 코드 실행

텐서플로우 설치 가이드에 있는 예제 코드를 스파이더 콘솔에 입력하고 실행 고고.

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

(실행 결과)
Hello, TensorFlow!

a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))

(실행 결과)
42

문자열 출력과 산술 계산을 텐서플로우 세션을 이용해서 돌려보는 것인 듯
위 예제가 정상적으로 실행되면 데모 모델을 실행할 차례


4-2. 텐서플로우 데모 모델 실행

시험용으로 사용할 데모 코드는 손으로 쓴 숫자 이미지를 기계-.-에게 학습시키는 예제인 것으로 보이며, 머신 러닝계에서는 Hello, World! 를 출력하는 수준의 입문용 예제라고 함

MNIST 라는 명칭(?)으로 불리는 듯 하며, 텐서플로우의 소개 페이지에도 파란약 줄까, 빨간약 줄까의 형태로 소개되어 있음

MNIST
MNIST


데모 모델에 대한 코드는 텐서플로우를 설치할 때 함께 설치되어 있으므로, 실행만 하면 됨.
아래의 코드를 윈도우즈 콘솔창에 붙여넣고 엔터

python -m tensorflow.models.image.mnist.convolutional


텐서플로우(TensorFlow) - MNIST Demo
텐서플로우(TensorFlow) - MNIST Demo


코드를 실행하면 예제 숫자 데이터 파일(idx3-ubyte, idx1-ubyte)을 다운로드 받아서 뭔가가 돌아가기 시작함

idx3-ubyte 는 숫자가 그려진 이미지들을 모은 것(?)이고, idx1-ubyte 는 해당 이미지가 의미하는 값(숫자)이라고 하는 듯

참고 페이지 : http://yann.lecun.com/exdb/mnist/index.html


Intel i7 2.20 GHz, 8GB RAM, Win7 64비트 환경에서 전체 8개의 CPU 코어가 사용률 85% 로 30분 이상 씽씽 돌아가고 나면 데모 코드가 종료됨


5. 마치며

뭔가 엄청난 것을 설치해서 돌려본 느낌인데
이런 기계 학습(?)을 마친 후에 임의의 이미지를 던져주고 그걸 어떻게 인식하는지 확인하는 방법은 아직 모름 -.-;;;;

아래의 페이지나 거기서 나오는 키워드로 검색하면서 계속 진행해 볼 계획


1. Using TensorFlow to create your own handwriting recognition engine
https://niektemme.com/2016/02/21/tensorflow-handwriting/


2. Number plate recognition with Tensorflow
https://matthewearl.github.io/2016/05/06/cnn-anpr/



댓글 18개:

  1. 도움이 많이 되었습니다.

    답글삭제
    답글
    1. 도움이 되셨다니 저도 뿌듯하네요 ^^

      삭제
  2. 5. 마치며에서 언급된 첫번째 사이트에 있는

    '기계 학습을 마친 후에 임의의 숫자 이미지를 던져주고 그걸 어떻게 인식하는지 확인하는 예제' 코드를 돌려 보았습니다. ^^


    텐서플로우(TensorFlow) 숫자 인식 테스트 // MNIST, 파이썬(Python) 3.5, 윈도우즈(Windows)용
    http://comajava.blogspot.kr/2017/01/tensorflow-mnist-python-35-windows.html

    답글삭제
  3. 윈도우에 설치하는 것 때문에 엄청 삽질하고 있었는데 정말 도움이 많이 되었습니다.
    감사합니다.

    답글삭제
    답글
    1. 도움이 되었다니 다행이네요 ^^

      (우먼 초이인 줄 알고 순간 설랬던 건 비밀입니다)

      삭제
  4. 본 포스팅을 작성한 후에 아나콘다 버전이 업그레이드 되어서, 파이썬 3.6 버전이 포함된 아나콘다가 기본으로 다운로드 되는 것 같습니다.

    설치 및 테스트에 참고하시기 바랍니다.

    답글삭제
  5. Python 3.6 을 설치하고 , 아나콘다 4.3.1을 설치후 아래와 같이 실행을 하니 파일이 잘못 된거 같은데 어떻게 해야하는지요 ?

    C:\>pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-0.12.1-cp35-cp35m-win_amd64.whl
    tensorflow-0.12.1-cp35-cp35m-win_amd64.whl is not a supported wheel on this plat
    form.

    답글삭제
    답글
    1. 저는 Python 3.5 환경에서만 돌려봐서 직접 확인은 해볼 수 없지만

      Python 3.6 에 텐서플로우를 설치하는 글도 많이 검색되는 것 같습니다. ^^

      아래 링크를 참고해 보세요.

      http://roundhere.tistory.com/207

      http://agiantmind.tistory.com/176

      삭제
  6. 파이썬과 아나콘다 버전이 꼬여서 텐서플로우 설치를 못하고있었는데, 뭐가 문젠지 도저히 모르겠다가 이 포스팅보고 해결햇네요! 정말 감사합니다~~

    답글삭제
    답글
    1. 해결 하셨다니 다행이네요. ^^
      댓글 감사합니다!

      오픈소스의 버전 문제로 고생하는 경우가 정말 많긴 하더라구요 ^^;;

      삭제
  7. 3.4에서 설치가 성공적으로 되었다고 했는데 3.5의 에러가 발생하였습니다.
    어떻게 해결하나요?

    답글삭제
    답글
    1. 다양한 원인이 있을 수 있습니다만,
      정상적으로 설치가 되었음에도 에러가 발생한다면

      (단순한 오해나 실수 등이 어딘가에 숨어 있을 수도 있기는 하지만)

      전부 삭제 후 재설치를 하시거나
      전부 삭제 후 최신 버전으로 맞춰서 설치하는 방법을 추천 드립니다. ^^;;

      개발환경 설정도 쉬운 일이 아니더라구요~

      삭제
  8. 저도 텐서플로 활성화 시킨후에 설치했는데 실행하면 모듈이 없다고 뜹니다.
    다시 설치하려고 하니까 잘 되있다고 하는것 같은데 왜 자꾸 모듈이 없다고 뜨는지 모르겠습니다.
    도와주시면 감사하겠습니다.

    (tensorflow) C:\Users\KBS>pip install tensorflow
    Requirement already satisfied: tensorflow in c:\users\kbs\anaconda3\envs\tensorflow\lib\site-packages
    Requirement already satisfied: werkzeug>=0.11.10 in c:\users\kbs\anaconda3\envs\tensorflow\lib\site-packages (from tensorflow)
    Requirement already satisfied: six>=1.10.0 in c:\users\kbs\anaconda3\envs\tensorflow\lib\site-packages (from tensorflow)
    Requirement already satisfied: numpy>=1.11.0 in c:\users\kbs\anaconda3\envs\tensorflow\lib\site-packages (from tensorflow)
    Requirement already satisfied: wheel>=0.26 in c:\users\kbs\anaconda3\envs\tensorflow\lib\site-packages (from tensorflow)
    Requirement already satisfied: protobuf>=3.2.0 in c:\users\kbs\anaconda3\envs\tensorflow\lib\site-packages (from tensorflow)
    Requirement already satisfied: setuptools in c:\users\kbs\anaconda3\envs\tensorflow\lib\site-packages\setuptools-27.2.0-py3.5.egg (from protobuf>=3.2.0->tensorflow)

    (tensorflow) C:\Users\KBS>

    답글삭제
    답글
    1. 제가 작업 할 때에 비해서 바뀐 부분이 많이 생기지 않았을까 합니다. ^^a

      제 글은 맥락이나 작업 순서 정도만 참고 하시고,
      기존에 설치된 내용을 전부 삭제한 다음에 전부 최신 버전으로 맞춰서 설치하는 방법을 추천드립니다.

      삭제
  9. 윈도우즈 10 버전에서

    아나콘다(Anaconda)3 4.4.0, 파이썬(Python) 3.6 기준으로 텐서플로우를 다시 설치해 보았습니다. ^^

    http://comajava.blogspot.kr/2017/07/windows-tensorflow-2017-7-10-python-36.html

    답글삭제
    답글
    1. 아나콘다 최신 버전에서 텐서플로우 설치가 잘 안 된다는 문의 댓글이 많아서 밤잠을 설쳤다는 후문. 으힠.

      삭제
  10. pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-0.12.1-cp35-cp35m-win_amd64.whl
    하면
    tensorflow-0.12.1-cp35-cp35m-win_amd64.whl is not a supported wheel on this platform.
    에러 뜨고요.
    DLL 에러 때매 visual 설치하려고 하면 이미 제시하신 버전보다 최신버전이 깔려있습니다.

    답글삭제
    답글
    1. 위쪽 댓글에도 비슷한 문의가 있는데,
      아마도 파이썬 버전 차이 때문이 아닐까 합니다. ^^a

      아래글을 참고해서 개발환경을 새로 구축하시는 것도 한 방법입니다.
      (개인적인 용도로 설치 중이시면 이 방법이 가장 깔끔합니다.)

      https://comajava.blogspot.kr/2017/07/windows-tensorflow-2017-7-10-python-36.html

      삭제