Failed to import 'pydot'. Please install 'pydot'. For example with 'pip install pydot'.

 

상황설명-

이 에러는 keras 혹은 의사결정나무(decision tree)에서 그래프를 그릴 때 사용하는 graphviz에 문제가 있을 때 발생합니다. 맥과 같은 linux os에서는 패키지가 깔리지 않았을 때, windows에서는 거의 무조건 발생하는 에러라고 보시면 됩니다. 사실 에러는 pydot자체적인 문제가 '아닙니다.' pip install pydot해도 오류는 해결이 되지 않아요.

 

해결법-

1) Mac과 같은 linux기반 OS + Anaconda

  (prompt)

  $ conda install graphviz

  [if needed]

  (coding tools)

  import os
  os.environ["PATH"] += os.pathsep + '~/opt/anaconda3/lib/site-packages/graphviz'

프롬프트에서 먼저 graphviz를 인스톨 해주시면 문제없이 돌아가는 경우가 많습니다. 그러나 설치한 뒤에도 계속해서 에러가 발생한다면 명시적으로 코드내에서 시스템 환경변수를 등록해주시면 됩니다.

 

2) Windows + Anaconda

  맥에 비해서 조금 복잡합니다.

  먼저 프롬프트에서

  $ pip install pydotplus

  를 입력하여 pydotplus를 설치해주십시오.

  이후
  https://graphviz.gitlab.io/_pages/Download/Download_windows.html
  홈페이지에 접속하여 OS에 맞는 graphviz설치 프로그램을 받아주신 뒤 설치하여 주십시오.(msi 확장자를 가진 파일로 다운로드 받아주시기 바랍니다.)

  만약 어떤 설정도 건드리지 않고 설치하였을 시 C드라이브 아래 Program Files (x86)경로에 깔릴 것입니다.

  이후
  import os
  os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'

  맥에서와 마찬가지로 코드 내에서 명시적으로 시스템 패스를 설정해주시면 됩니다.

  (실제 시스템 자체에서 패스 설정하는 방법이 있지만 복잡하여 코드 내 설정방법으로 설명드렸습니다.)

[AWS/Ubuntu/Linux/Anaconda/Selenium] aws에서 작동하는 selenium 패키지를 활용한 python 실행 파일 만들기

 

aws에서 selenium 패키지를 활용하여 웹 크롤링 혹은 스크래핑을 진행하는 데 있어 정말 여러가지 오류들이 있어서, 이참에 아예 한번 싹 정리해봅니다.

 

아예 완전히 aws 인스턴스를 처음 만들었다고 가정합니다.

관련 페이지: https://omnil.tistory.com/67, https://omnil.tistory.com/144

 

1. 아나콘다 다운로드 및 설치

- 관련페이지의 설명과 같이 Anaconda3-2019.10-Linux-x86_64.sh 이 부분만 원하는 버전으로 바꿔주시면 됩니다.

wget https://repo.continuum.io/archive/Anaconda3-2019.10-Linux-x86_64.sh && sh Anaconda3-2019.10-Linux-x86_64.sh

 

2. 배쉬 리프레시 및 설치파일 제거

source ~/.bashrc && rm Anaconda3-2019.10-Linux-x86_64.sh

 

3. 새 폴더 생성 및 이동

mkdir sandbox && cd sandbox

 

4. unzip과 chromium-browser설치

sudo apt update && sudo apt install unzip && sudo apt-get install -y chromium-browser

 

5. chromium-browser version확인

- 여기서 확인한 버전으로 크롬드라이버를 깔아주어야 합니다.

chromium-browser --version

 

6. (위에서 확인한 버전에 맞는) 크롬드라이버 다운로드, unzip, chromedriver 실행권한 변경 및 기본 path로 이동

- 위에서 확인한 버전에 맞는 크롬드라이버 다운로드 링크는 >>여기<<서 확인하실 수 있습니다.
wget https://chromedriver.storage.googleapis.com/79.0.3945.36/chromedriver_linux64.zip

unzip chromedriver_linux64.zip && chmod +x chromedriver && sudo mv chromedriver /usr/bin/chromedriver && rm chromedriver_linux64.zip

 

7. 크롬드라이버 버전 확인

- chromium-browser --version과 동일해야 합니다.

chromedriver --version

 

8. 파이썬 파일에서 사용할 패키지 설치

pip install selenium telepot

 

9. 스크린 작동

- 스크린에 관련하여서는 >>페이지<< 하단에 자세하게 나와있습니다.
screen -S noti

 

10. 파이썬 파일 실행

- 파이썬 파일 이름은 watch_key.py입니다.

python watch_key.py

 

11. 파이썬 파일 내부에서 selenium을 사용할 경우에는 반드시 아래와 같은 옵션을 주고 드라이버를 실행하여야 합니다.

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')

driver = webdriver.Chrome(options=chrome_options)

'Software > AWS' 카테고리의 다른 글

[AWS/Linux] wget으로 아나콘다 깔기  (0) 2019.09.20

[python/pandas] read_csv에서 line contains NULL byte 에러

Error-

  Line contains NULL byte

 

원인-

  말 그대로 파일에 NULL 바이트가 섞여서 판다스에서 read_csv로 변환할 수 없다는 에러이다.

  보통 utf-16 인코딩 파일을 읽어오려할 때 발생한다.

 

해결법-

  가장 간단한 방법은 원본파일의 인코딩을 재설정하는 것이다.

  팁으로 가장 간단하게 메모장으로 열어서 인코딩만 바꿔 재 저장해주는 방법이 있다.

  리눅스에서는 

  $ iconv -c -f utf-16 -t utf-8 file.csv > file2.csv

  명령어를 통하여 인코딩을 바꿔줄 수 있다.

  이 경우 추가적으로 file separation을 제대로 못 잡아주는 경우가 생길 수 있다.

  이 경우엔 명시적으로 sep='\t'옵션을 주면 해결되는 경우가 대부분이다.

에러전문

RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of 'python' with 'pythonw'. See 'Working with Matplotlib on OSX' in the Matplotlib FAQ for more information.


원인

이 에러는 matplotlib 패키지에서 발생하는 에러입니다.

matplotlib에서 사용되는 backend가 제대로 설정되지 못하였기 때문에 발생합니다.



해결법

Mac의 터미널에서 이하의 명령어를 입력합니다.

echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc

아무 결과가 출력되지 않으면 제대로 된 것입니다.

이후에 다시 실행해보면 제대로 동작하는 것을 확인할 수 있습니다.

[파이썬(Python)] 기본문법

 

기본적으로 개행시 특수문자가 필요하지 않다.

블록구분은 콜론(:)과 인덴테이션(tab)으로 한다.

if문에서 괄호를 작성하지 않는다.

for문은 이터러블 객체에 in 명령어를 사용하여 사용한다.

한 줄에 여러 명령어를 동시에 사용할 때는 세미콜론(;)으로 연결한다.

주석은 #

논리 합, 논리 곱, NOT 연산은 각각 and, or, not 키워드를 사용한다.(&&, ||, ! 사용 안됨)

=> 판다스(pandas) 패키지에서 매직 인덱싱 할때는 & | ! 사용

보통 인코딩을 모르는 미지의 파일을 파이썬의 open()함수를 통하여 열 시에 위와같은 오류가 종종 발생한다.

 

그 이유는 파이썬은 utf-8이 기본 인코딩인데, utf-8로 해당 문서를 열려고 했더니 문제가 발생했다는 것이다.

 

이때는 open()함수의 encoding 파라미터를 통하여 인코딩 방식을 다른 방법으로 지정해 주면 파일이 열린다.

 

보통 윈도우에서 작성하거나 웹에서 긁어온 문서는 'euc-kr' 혹은 'cp949'로 대부분 해결이 된다.

 

가끔 해외에서 작성된 문서의 경우 'latin_1'인코딩도 종종 보인다.

 

즉, open("file.name", "r", encoding='euc-kr')의 식이다.

 

그러나 저 두가지 인코딩을 사용하였는데도 제대로 작동이 안되는 경우에는 인터넷에서 직접 인코딩 방식을 찾아 보아야 한다.

 

파일 인코딩 알아보기

 

파일 인코딩 확인법(How to find out file encoding)

GNU 시스템 하에서는 해당 폴더로 이동한 후에 file * 혹은 file --mime-encoding * 을 명령줄에 쳐주면 인코딩 방식이 나온다. 윈도우에서는 git bash를 깔면 gnu시스템을 이용할 수 있으므로 위와같이 해주면 되..

omnil.tistory.com

 

그런데 이 방식을 활용하여도, 인코딩은 저렇게 해놓고, 실제 내부에서 인코딩된 문서가 쓰인 방식이 다를 수 있다.

(가령 저 인코딩 방식으로 파일이 열리는데도 그 안에서도 파일이 깨져보이는 경우)

 

그때는... 답 없이 경험에 의지해서 여러 인코딩 방식을 시험해보는 수밖에 없다.

그것이 바로 위에서 말했던 latin_1, euc-kr, cp949등 이다.

 

더욱 많은 인코딩 방식은 파이썬의 공식 도큐멘테이션에 2/3 지점에 나와있다.

만일 해당 국가가 한국이 아니라 중국, 대만, 일본 등이면 그에 맞는 인코딩 방식을 하나하나 시험해보는 수 밖에 없다.

이제 그동안에 인스턴스를 만들고 서버에 접속도 되며, 파일까지 올릴 수 있으니 본격적으로 서버를 활용해 보는 시간을 가져보도록 하겠습니다.

 

일단 요새 프로그래밍 언어 중 가장 핫한 파이썬을 깔아보도록 하겠습니다.

 

파이썬은 여러 패키지가 장점인 만큼 오히려 패키지가 서로 상호 의존적인 부분이 있어 따로 설치시에 가끔씩 오류가 나는 경우가 있어서 요새는 '아나콘다(Anaconda)'라는 Continuum사에서 따로 배포하는 배포판을 받아서 설치할 것입니다.

 

가볍게 '배포판'이라는 것은 파이썬 인터프리터 외에 필수적인 여러 패키지를 한번에 묶어서 배포하는 것 입니다.

 

여기서는 리눅스 자체에서 wget 명령어로 다운받는 방식과 리눅스 실행파일을 받은 뒤 FTP로 올려주는 방법이 있습니다.

(차이는 명령어로 좀 더 쉽게 처리하냐 아니면 수작업을 한번 더 하느냐의 차이일뿐입니다.)

 

1) wget 명령어 활용

      1) https://repo.continuum.io/archive/에 접속하시면 다운받을 수 있는 파일의 이름이 쭉 나옵니다. 이 중에서 원하는 버전(2번대 혹은 3번대. 개인적으로는 3번대를 추천드립니다.)과 원하는 OS(여기서 우리는 Linux 버전), 프로세스 타입(32bit, 64bit) 그리고 원하는 날짜(가장 최근 릴리즈 된 것 등)를 고르신 뒤 .sh로 끝나는 파일명을 오른쪽 클릭하여 링크 주소를 복사합니다.

      2) PuTTY 혹은 커널로 접속한 뒤 wget을 입력한 뒤 한칸 띄우고 아까 복사한 링크를 붙여넣기 합니다. 예를 들어 파이썬 버전 3, 64비트 운영체제 linux 최신 릴리즈(2019.03)인 파일을 다운 받으려면 [wget https://repo.continuum.io/archive/Anaconda3-2019.03-Linux-x86_64.sh]라는 명령줄을 입력하시면 됩니다.

 

2) 웹 다운로드 후 FTP활용

      1) https://www.anaconda.com/distribution/사이트에 접속합니다.

      2) 중간의 OS에서 Linux를 클릭한 뒤 아래쪽의 버전대를 보시고 64비트 인스톨러를 클릭합니다.(아마 그냥 Download 버튼을 클릭해도 64비트 인스톨러가 다운로드 될 것입니다.)

      3) FileZilla를 켜시고 다운받은 파일을 서버에 업로드 해 줍니다.

 

이렇게 아나콘다 파일 다운로드는 끝났습니다.

 

이후에는 공통적으로 [bash 파일이름]을 입력하시면 설치가 시작됩니다. (bash Anaconda3-2019.03-Linux-x86_64.sh)

 

설치시에는 yes|no가 나오는 부분에서 전부 yes를 해주시면 되며, system path에 등록할거냐고 묻는 질문에 yes 해 주신 뒤 source ~/.bashrc 한번 해 주시면 system path가 등록이 됩니다.

 

이 상태에서 테스트 스크립트를 한번 돌려보고 만약에 테스트 스크립트가 돌아가지 않는 경우 conda환경을 하나 만들어주어야 합니다.

 

테스트 스크립트 만드는 방법은 아래를 따라오시면 됩니다.

 

시스템 CLI: vi test.py 입력

VIM안에서 a [vim 에디터 수정 명령어]

print("Hello world!")

esc로 에디트 모드 해제

:wq 입력하여 저장 후 CLI창으로 복귀

시스템 CLI: python test.py 입력

 

화면에 Hello world!가 출력되지 않는다면 conda 환경을 만들어주어야 합니다.

 

conda create --name [환경이름] python=3

conda activate [환경이름]

 

환경이름에는 영어로 입력해주시면 됩니다. 가령 my_env 같은 이름으로요.

 

저의 경우 이렇게 한번 activate 시켜주면 이후로는 지속적으로 activate되어 있었습니다.

 

그리고 다시 python text.py를 입력해보시면 이번에는 확실하게 Hello world!가 찍히는 것을 보실 수 있습니다.

 

더 궁금하신 점은 댓글 달아주시면 확인 후 답변드리겠습니다.

 

다음에는 이 환경에서 온라인으로 jupyter notebook 서버를 만들어보도록 하겠습니다.

제작년에 keras로 CUDA환경을 구축하려다가 정말 정보의 심각한 부족으로 실패한 적이 있었는데, 이번에는 별 문제 없이 한번에 성공하여서 그 과정을 기록하려고 합니다.


저에게도 의미있는 기록이지만, 다른 분들도 많은 도움이 되셨으면 좋겠네요.



이번에는 keras같은 상위 wrapper 없이 텐서플로 그대로 진행하였습니다.


도움을 많이 받은 문서는

https://www.tensorflow.org/install/gpu

로, 텐서플로 페이지 자체에서 제공해주고 있습니다.


아래는 제 컴이 윈도우즈인 관계로 윈도우즈를 기본으로 합니다.

만약 linux와 같은 운영체제이신 경우 위의 텐서플로 홈페이지에서 리눅스는 어떻게 설치하는지 잘 알려줍니다!


1) 본인의 GPU가 CUDA GPU 환경을 제공하는지를 확인해 봅니다.

기본적으로 CUDA가 엔비디아nVidia사에서 만든 플랫폼이므로 엔비디아의 지포스 제품이면 일단 가능성은 있지 않을까 생각해 볼 수 있을 것 같습니다.

그리고 GTX 붙으면 일단 된다고 보시면 될 것 같습니다.

요기로 가시면 CUDA가 가능한 GPU인지 확인해 보실 수 있습니다. https://developer.nvidia.com/cuda-gpus

저는 GTX 1060이라 묻지도 따지지도 않고  그냥 설치했습니다.


2) 차례대로 NVIDIA® GPU drivers, CUDA® Toolkit, CUPTI, cuDNN을 깔아줍니다.

텐서플로-gpu는 먼저 깔아도 되고 위의 4가지 프로그램을 다 깔고 깔아도 되는 것 같습니다.

CUPTI는 굳이 안깔아도 될 것 같기는 한데, 저번에 한번 CUDA하려다 안되서 작은 가슴에 그냥 깔고 진행했습니다.


2*) gpu환경을 사용하기 위해서는 tensorflow-gpu를 깔아야 합니다. 아나콘다를 사용하시면 아나콘다 프롬프트에서 conda install tensorflow-gpu를, 아니시라면 pip install tensorflow-gpu를 입력하시면 tensorflow-gpu가 깔립니다. tensorflow-gpu가 깔리면, 이전과 같이 import tensorflow하시면 됩니다.


3) 다 깐 뒤에 시스템 PATH를 설정해 주어야 합니다.

여기서는 시스템 PATH를 설정해 주는데, 깔린 위치가 정확해야 합니다.

드라이버와 툴킷을 깔면 설치파일처럼 설치가 되고, CUPTI와 cuDNN은 압축파일로 풀리게 될 것 입니다.

여기서 설치파일은 상관이 없는데, CUPTI과 cuDNN은 압축을 푼 뒤 폴더 이름을 각자 'CUPTI'와 'tools'로 바꾸어 줍니다.

그리고 CUPTI 폴더는 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras'아래에 폴더를 통채로 복사 붙여넣기 해주시고, tools 폴더는 C드라이브 아래 바로 붙여넣어 주세요.


이후 아무 명령 프롬프트나 여시고(예를 들어 실행->cmd)

SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin;%PATH%

SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64;%PATH%

SET PATH=C:\tools\cuda\bin;%PATH%

요렇게 세 개를 써주시면 됩니다.


텐서플로에서 9.0만 지원한다고 그래서 찾다가 저는 9.1로 설치하였는데, v10도 텐서플로에서 잘 작동하는 것 같습니다. 만약에 오류가 나시면 v9.1로 시도해 보세요.


4) 제대로 깔려서 gpu에서 사용되는지 확인하기 위해서

파이썬을 켜시고(명령프롬프트에서 python 치셔도 되고, jupyter notebook에서 cell에 입력하셔도 됩니다.)

from tensorflow.python.client import device_lib 

print(device_lib.list_local_devices())

이렇게 입력해서 무언가 주르륵 나온다 하면 설치가 제대로 된 것입니다.

그리고 이후에 tensorflow 소스코드에서


device_name = "/gpu:0"

log_device_placement = True


with tf.device(device_name):

    x = tf.placeholder(tf.float32, shape=[None, 32, 32, 3])

    y = tf.placeholder(tf.float32, shape=[None, 10])

    .

    .

    .


with tf.Session(config=tf.ConfigProto(log_device_placement=log_device_placement)) as sess:

    sess.run(tf.global_variables_initializer())

    .

    .

    .


요런식으로 소스 코드를 수정해주시면 프로그램 실행 중 명령 프롬프트에서 실제로 GPU가 사용되는 현황을 볼 수 있습니다.

윈도우즈에서 torchvision 깔기(with 파이토치(pytorch)깔기)


윈도우즈에서 파이토치(pytorch) 깔기는 굉장히 쉽다.


아나콘다 받아서 설치하고 -> 아나콘다 프롬프트를 실행시키고 ->

(엔비디아(nvidia) 계열 그래픽카드(gpu) 사용 시) conda install -c peterjc123 pytorch

(그 외 그래픽카드 혹은 cpu만으로 사용 시) conda install -c peterjc123 pytorch-cpu


끝!


확인할 수 있는 방법은 jupytor notebook을 켜거나 그냥 아나콘다 프롬프트에서 python입력해서 python 인터프리터 창으로 들어가서

import torch

실행해서 에러가 없으면 설치 성공!


근데 문제는 딥러닝을 조금 더 공부해서 cnn(convolutional neural network)으로 넘어가게 되면 torchvision이 필요하게 되는데, 이게 설치하는 방법이 구글링을 해봐도 잘 안나온다.


바로 아나콘다 클라우드에 

conda install -c anaconda torchvision

이라는 명령어가 나오기는 하는데, 윈도우즈에서 돌리면 채널이 없다고 나온다!


홈페이지 들어가 보았더니 osx와 linux만 지원한다고 한다.


그러면 윈도우즈에서는 깔 수가 없는 것인가?

아니다!


pip 명령어를 사용하면 아주 쉽게 깔 수 있다.


pip install torchvision


끝.


위와 같이 import torchvision 해서 에러가 안나면 제대로 깔렸다고 볼 수 있다.


만약 pip에서 에러가 나면 이전 포스팅인 pip에러 수정하는 방법에 대해서 확인해보자!

윈도우즈(windows)에서 아나콘다(anaconda)를 깐 뒤 아나콘다 프롬프트(anaconda prompt)에서 pip명령을 쳐서 뭘 설치하려고 하면 화면 가득 빨간 글씨가 가득 뜨며 설치가 안되는 경우가 있다.

(진짜 빨간글씨가 우루루루루루 나오는데, 조금 소름끼친다)


그리고 그 문장의 제일 마지막은

pip._vendor.pkg_resources.RequirementParseError: Invalid requirement, parse error at "'; extra '"

이걸로 끝난다.


구글에서 열심히 구글링 해 본 결과 이것은 testpath 패키지? 가 문제가 되어 pip를 망가뜨렸다는 것인데, 그럼 어디 한번 이것을 고쳐보자.


처음 하는 것이라 정말 한참 걸렸는데, 정말 쉽다.


아나콘다 프롬프트에서

conda install 'testpath>=0.4.2'

이 명령어를 쳐주자.

아마 커서가 내려가서 깜빡일 텐데 엔터 한번 더 쳐주자.

그러면 설치가 끝나고, 이렇게 설치가 끝난 상태에서 pip install다시 하면 제대로 실 행 이 됩 니 다.


문제 해결!


보니까 testpath버전이 0.4 아래에서 이런 문제가 발생하는 것 같은데, 0.4.2 버전에서 이 문제를 수정하였다고 한다.

+ Recent posts