본문 바로가기
Development/Free Topic

Ubuntu - virtualenv, scrapy 사용법

by IMCOMKING 2015. 7. 31.

# GPU 모니터링 : watch -0.5 nvidia-smi     (0.5는 시간)

watch -n 0.5 "nvidia-smi | grep MiB"


# CPU 모니터링 : top (또는 ps? 근데 top이 더 맞는듯)


# GPU를 사용중인 Python 프로세스 종료 : 이 방식으로 해야만, 안전하게 다른 프로그램에 영향을 미치지 않음.

nvidia-smi
python process의 PID확인
kill -9 PID


# 모든 GPU 프로세스 종료 :  이 명령을 사용하면, X window도 죽어버려서 위험하다. 위 방법을 추천

kill -9 $(nvidia-smi | sed -n 's/|\s*[0-9]*\s*\([0-9]*\)\s*.*/\1/p' | sort | uniq | sed '/^$/d')

https://www.quora.com/How-do-I-kill-all-the-computer-processes-shown-in-nvidia-smi

http://manpages.ubuntu.com/manpages/vivid/man1/alt-nvidia-346-smi.1.html



# CPU 프로세스 중에서, 특정 이름을 가진 프로세스 삭제 :

pkill 이름
pgrep 이름 | xargs kill
kill $(pgrep 이름)


http://superuser.com/questions/742715/how-to-kill-all-processes-returned-by-pgrep

http://faq.hostway.co.kr/Linux_ETC/1567



ps -aux : 모든 사용자의 ps확인


virtualenv : 가상의 환경변수 파일을 만들어서 안전하게고 편하게 이런저런 설정 파일을 사용 가능하게 해줌
유저끼리 충돌할 일도 없고, 파이썬 2.7에서 파이썬 3으로도 자유롭게 변환 가능. 버그도 상당수 해결해줌

https://virtualenv.pypa.io/en/latest/installation.html



scrapy : 오픈소스 웹 크롤러. 사용이 간단하고 많은 사람들이 쓰는 것으로 보임

http://doc.scrapy.org/en/1.0/intro/overview.html



- Command not founds  해결:

1) 프로그램이 안깔려 있다.

apt-get 으로 설치된 프로그램은 다음으로 확인가능.

dpkg -l | less

| less 대신, | grep "이름" 을 이용할 수도 있다.

안깔려 있으면 설치해준다.


2) path 등록이 안되어 있다. ( echo $PATH 로 확인 )

vi ~/.bashrc
PATH=$PATH:/home/vivek/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games  <-- 여기에 경로 추가

:으로 구분함
source~/.bashrc 로 컴파일





# 가상환경에서 scrapy 설치 :

1) sudo pip install virtualenv

2) virtualenv --system-site-packages MYENV

   #원하는폴더 생성,  –-system-site-packages  이게 있어야 global패키지 사용이 가능하다는 듯

3) source MYENV/bin/activate # 버추얼 env실행

4) sudo apt-get install build-essential libssl-dev libffi-dev python-dev libxml2-dev

sudo apt-get install libxml2-dev libxslt-dev  python-dev  python-setuptools

(설치도구를 깔아야함)

5) pip install scrapy

6) scrapy runspider test.py
(test.py 의 코드는 미리 작성되어있어야함.)

import scrapy


class StackOverflowSpider(scrapy.Spider):

    name = 'stackoverflow'

    start_urls = ['http://matchhistory.leagueoflegends.co.kr/ko/#match-history/KR/804347?champion=78&matchType=2']


    def parse(self, response):

        filename = response.url.split("/")[-2] + '.html'

        with open(filename, 'wb') as f:

            f.write(response.body)



https://seanmckaybeck.com/scrapy-the-basics.html




# sudo apt-get으로 설치한 패키지 위치 확인

dpkg -L zlib1g-dev


* 주의사항!

sudo apt-get으로 설치를 하면 virtualenv 말고 전체 시스템에 깔림.


- apt-get으로 설치한거 삭제하기
sudo apt-get --purge remove 패키지이름
sudo apt-get purge --auto-remove python-pip

*pip로 삭제가 안되면, python-pip로 삭제

ex) pip install numpy

numpy는 pip로 까는게 좋음. python 패키지는 전부그런듯



끌때는 deactivate



-

theano 설치, virtualenvs에 설치할 경우 반드시 global package 옵션을 켜야함. 만약 안킨경우 아래의 링크를 통해 no-global-site-packages.txt 를 지워줘야함

http://stackoverflow.com/questions/3371136/revert-the-no-site-packages-option-with-virtualenv


http://deeplearning.net/software/theano/install_ubuntu.html





-

HDF5포멧을 다룰 수 있는 파이썬 패키지인 H5py 설치 방법

sudo apt-get install python-h5py



zip 압축 풀기

unzip 파일명.zip -d ./압축풀폴더명

zip 압축 하기

zip 파일명.zip -r ./압축할폴더명


http://ngee.tistory.com/231

-


(virtualenv 에서 pip도 업데이트를 해줘야하는듯)


eazy_install pip :이렇게하면 충돌일어남



# pip version이 충돌해서 이상한 python버전에 자꾸 설치될 떄

python -m pip ~~

python3 -m pip~~

python3.5 -m pip ~~

python2 -m pip ~~


*이런식으로 python -m 명령어를 사용하면 버전을 정확하게 지정할수있음


pip --version

pip의 버전확인


* 만약 pip freeze가 잘 동작하지 않으면, pip --version 을 해볼것. 8.0이 아니라 1.5.4가 깔려있으면 잘못된것임.

이 경우, 다음의 명령어로 최신 pip를 설치한다.


## pip 최신 버전 설치 사전 준비 사항
pip 를 정상적으로 설치하려면 최소한의 시스템 패키지가 필요하다.

sudo apt-get install -y make dpkg-dev build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev


https://stackoverflow.com/questions/12344970/building-python-from-source-with-zlib-support



# zlib import 에러

sudo apt-get install --reinstall zlibc zlib1g zlib1g-dev


https://ubuntuforums.org/showthread.php?t=1528204


## 위의 명령어를 하면 다음 명령어가 성공해야한다. 만약 안된다면? lib경로가 깨진 것이다.
python3 -c "import zlib" 
또는
which zlib


https://unix.stackexchange.com/questions/291737/zipimport-zipimporterror-cant-decompress-data-zlib-not-available/291822


그 이유는  /usr/lib 경로 대신, usr/lib/x86_64-linux-gnu/ 경로에 설치가 되기 때문이다.


http://fnch.users.sourceforge.net/pythononubuntu1104.html


따라서 이를 해결하려면 직접 .bashrc에 경로를 잡아주어야한다.


zlib_lib="/usr/lib32"
zlib_inc="/usr/include"
export CPPFLAGS="-I${zlib_inc} ${CPPFLAGS}"
export LD_LIBRARY_PATH="${zlib_lib}:${LD_LIBRARY_PATH}"
export LDFLAGS="-L${zlib_lib} -Wl,-rpath=${zlib_lib} ${LDFLAGS}"


https://stackoverflow.com/questions/46959072/installing-pip-python-3-6-3-ubuntu-16-04-zlib-not-available-but-its-installed



* 이렇게 해도 안되네..... zlib을 먼저 깔고 python을 설치해야 경로가 잡히는 것으로 추정됨... 포기... 재설치하거나 conda로 깔아야하는것으로 보임.



pip 최신 버전 설치 방법

wget https://bootstrap.pypa.io/get-pip.py

sudo python get-pip.py



# pip 사용법

pip install --U pip :  pip 버전 업데이트


pip freeze

파이썬에 설치된 전체 패키지 확인


pip freeze| grep ipython

ipython 버전확인


pip show ipython

음.. 뭔가 freeze랑 다름.. freeze에서 안뜨는데 여기서는 뜨네?


pip install --upgrade ipython

업그레이드

pip install ./downloads/SomePackage-1.0.4.tar.gz
tar.gz에서 바로 설치하기 (github에서도 바로 가져와서 설치가 가능함)


ls | less
이렇게 하면 긴 화면이 한번에 안넘어가고 천천히 넘어감.

Pipe 명령어
| 을 사용하는 pipe 명령어는, 두개의 command간의 입출력 관계를 설정할 수 있다.


grep 명령어

grep은 해당 결과내에서 특정한 문자열을 검색하는 용도이다




# 파일의 내용이 변화했는지 hash값 체크하기
shasum 파일명





댓글