작년 한해동안은 Pyframe 를 이용해서 python web 개발을 해왔었는데,
갑자기 요즘들어 Django(장고) 를 이용한 개발이 해보고 싶어서 기존에 있던 서비스도 전부 Django 로 바꿀 예정이다.
(pyframe 이 가볍고 좋은데 굳이 바꾸는 이유는 나도 모르겠다… 그냥 공부해보고 싶어서?;;)

기존 서비스들을 Django 로 포팅하려고 생각하니
콘솔에서 일일이 열어서 복사하고 붙여넣기 하고 하는등의 작업이 너무 귀찮게 느껴지는것이다.
그래서 우선 어제 저녁 8시부터 오늘 점심때까지 잠을 잤다 ;;;

서론은 여기까지… 본격적으로 Django 개발을 위한 IDE 에 대한 글을 시작해본다.

0. Python 지원하는 IDE
Django 개발을 위한 IDE 설정이라고 했지만
어떻게 보면 Python 을 위한 IDE 라고 해도 크게 다를바가 없다.
Django 를 위해서 할일은 단지 실행할때 Django 개발서버를 구동시키는 작업뿐..
(아직 내가 한게 이것뿐이라서.. 디버깅, 템플릿 지원 등은 모르겠다)

우선 Python 을 지원하는 IDE 에 대해 알아보는 글을 아래 링크 참고

위의 글에서 보면 여러가지 에디터가 나오는데 내가 몰랐던것도 많다.(wingware ide 라는것도 있는거 같다)
특히 코모도(Komodo IDE) 에디터의 경우에는 Django 지원이라고 아예 써있지만…
예전에 한번 깔았던 느낌이 별로였던거 같아서 우선 제외 시켰다.(나중에 꼭 써봐야지)

http://kkubasik.wordpress.com/2008/03/05/can-someone-get-us-a-real-django-ide/
위 링크에 있는 글의 마지막 댓글을 보면 넷빈즈(Netbeans)에서도 Python 을 지원한다 !!! (2009년 1월부터)
아주 괜찮은것 같은데 안써봐서; (http://wiki.netbeans.org/Python#section-Python-GettingStarted)
(여담이지만 저 링크의 글 중간쯤의 댓글들에는 진정한 프로그래머는 메모장을쓰네 textmate,vi,emacs 이러고 있다)

결론적으로 내가 선택한 Django 를 위한 IDE 는 eclipse(이클립스)+Pydev !
선택한 이유는 생각보다 단순하지만 그리 단순하지만은 않은… 응 ?

  • 회사에서 이클립스를 사용하고 있다. -_-;;;
  • SVN 과 연동하는 부분이 참 마음에 든다.(Team 싱크라던지.. 등)
  • eclipse(이클립스) 쓰면서 SVN 부분이나 다른 부분이 생각보다 편해서.. 습관인듯

Django 를 위한 eclipse(이클립스)+PyDev 를 시작 !

1.eclipse(이클립스) 설치
이클립스 설치는 해보신 분한테는 간단하겠지만
내 경험상… 처음 이클립스 설치할때 참 삽질 좀 했다.

간단하게는 이클립스 사이트 가서 다운 받으면 되는데
이놈의 이클립스는 다운로드사이트 가도 여러개가 무진장 많다.
이중에서  JEE 버전으로 받으면 무난하다고 생각되어진다.(자세한건 모르겟다.)
JEE 는 그나마 웹개발에 필요한 플러그인도 몇개 설치되있고 해서 선택 !

이클립스는 설치가 아니라 압축만 풀면 되는데
압축풀고 그냥 실행하면 오류난다 아 젠장… 암것도 손도 안댔는데 오류나…
검색해서 찾아봤는데 해결방법(http://artlife.egloos.com/4382131)
“eclipse.ini파일에서 256M 부분 앞쪽에 한칸 띄워주면 해결된다” …
나 역시 내가 겪어본 세상에서 제일 어이없는 오류…-_-;;;

2. PyDev 설치(이클립스 플러그인)
이클립스에 python 을 위한 플러그인 PyDev 를 설치 한다.
이클립스 3.4 버전이후에는 플러그인 설치하는게 약간 다른데 Help->software update 에서 add site 한다음
http://pydev.sourceforge.net/updates/ 이 주소를 입력하고 extension 인것은 제외 하고 설치하면 된다.
플러그인 설치후에는 이클립스 재실행 !!

3. Subversive(이클립스 플러그인)
내가 좋아하는 플러그인 중에 하나이다.
이클립스에서 SVN 사용을 위해 깔아두면 참 편한것중에 하나이다.
Subclipse 라는것도 있는데 package 탐색기에서 볼때 조금 불편하다.(맨 위 루트에 리비전 표시가 안된다.)
subversive 에는 단점도 있는데… 플러그인 설치하고, svn connector 역시 따로 설치해줘야 한다는거
이게 이클립스의 무슨 정책때문이란다. subversive 가 이클립스 프로젝트 안으로 들어가서 그런다고 하던데

어쨋든 설치는 내가 삽질 다 해봐서 아래처럼만 하면 간단하다

  1. subversive 설치
    1. subversive 의 플러그인 설치 주소 있는곳
    2. 지금 현재로는 http://download.eclipse.org/technology/subversive/0.7/update-site/
      이게 플러그인 주소
    3. (subversive 가 이클립스 프로젝트로 들어가면서 버전이 이상하게 되버렸다.
      지금은 0.7 이고 이클립스 프로젝트 들어가기전 버전은 1.1.x 이다.)
  2. svn connector 설치
    1. svn connector 주소 있는곳
    2. 지금 현재 http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/ 이게 주소
    3. connector 이 여러개 있다. JavaHL, SVN Kit, Native JavaHL 중에 골라서 설치하면 된다.
      1. 각각 장단점이 있는데 JavaHL 은 SSH 접속이 안된다. 즉 svn+ssh 접속을 할수가 없다.
      2. SVN Kit 은 회사에서 삽질했었는데 체크아웃이 계속 실패하는 현상이 있었다.
        1. svn kit 이 불안정해서 체크아웃이 가끔 안되기도 한다는 그런 의미였었다.
          (소스포지 SVN 에서 그런다고 하는데 회사 svn 하고도 그런 문제가 있었다.)
        2. 링크 참고
      3. 결론.. 내 가상서버 SVN 은 ssh 접속을 해야되서 SVN Kit 으로 설치

* svn 설정과 관련해서 ssh 포트가 22 기본포트가 아닐경우 일반적으로 svn+ssh:// 이렇게 하면 안되고
svn+ssh55522:// 이런식으로 설정(윈도우의 경우 거북이svn 설정에서, 리눅스는 .svninfo? 그쪽에서)해서 쓰는데
이클립스의 team svn 설정에서는 그럴필요 없이 svn+ssh:// 를 주소로 사용하고 ssh 설정에서 포트를 지정해주면 잘된다.

4. Django 설치
우선 이클립스와 연동을 위해 설치~~ 서버에서 IDE 로 작업할거면 이건 패스해도 상관없다.(이미 깔려있을테니)
리눅스의 경우에는 해당 배포판에 맞게 설치하고, 윈도우 위주로 설명하자면

  1. Django-1.0.2-final.tar.gz 파일을 다운받아서 압축을 풀어준다.
  2. 윈도우 cmd 창에서 해당 폴더로 이동후 setup.py install
  3. Python 이 설치된 폴더의 site-packages 에 django 가 설치되었다.
  4. 아까 압축푼 폴더하고 압축파일은 필요없으니 삭제
  5. django-admin.py 명령어를 아무데서나 사용할수 있게 컴퓨터 환경변수에 등록
    1. 내컴퓨터에서 마우스 오른쪽 버튼 -> 속성 -> 고급 -> 환경변수 -> 시스템변수 -> Path -> 편집
      -> C:\Python25\Lib\site-packages\django\bin 이런 식으로 추가해준다.

5. 첫 프로젝트 추가
이제 설치 하는건 다 끝났다 ^^
이클립스 실행후 새 프로젝트 생성을 Pydev 프로젝트로 한후에 생성한다.
프로젝트 이름과 다른것들을 설정하는데
여기서 맨 아래부분의 “create default ‘src’ folder an add it to the python path” 는 체크 해둔다.
(이유는 이렇게 해야 실제 프로젝트와 같이 import 가 된다.)

이클립스 프로젝트를 추가햇으니 이제 Django 프로젝트를 추가하자 !
폴더구조는 아래 박스를 참고해서 하면 된다.

cd workspace/django/src    (이클립스 프로젝트 폴더의 src 폴더로 이동)
django-admin.py startproject mysite     (새로운 Django 프로젝트 생성)

이렇게 하면 아래와 같은 폴더구조가 된다. ^^ 이클립스에서 열어도

/workspace    -> 이건 이클립스 기본 워크스페이스 폴더
–/django       -> 이클립스에서 만든 PyDev 프로젝트 이름
—-/src         -> 기본적으로 생성되는 폴더
——/mysite -> django 프로젝트 폴더
——__init__.py     -> 기본파일들…
——manage.py
——settings.py
——urls.py

참고로 내꺼 캡쳐 화면
4984683c860f49Z Django 를 위한 IDE 설정(이클립스)

위와 같은 구조가 사실은 내키지 않았다.
쓰잘데기 없이 src 폴더가 생겨야 하고, 이로인해 리눅스 서버에서 체크아웃 받을때 경로도 설정해야 하고…
근데 어쩔수 없었던데 src 폴더가 생기면서 pythonpath 로 등록되어서
import 시에 mysite.model 이런식으로 자동완성이 지원된다.
이상하게 mysite 를 이클립스 프로젝트 이름으로 하고 pythonpath 로 수동 등록해줘도
improt 시에 mysite.model 이 안되고 model 이렇게 되어버린다. 이렇게 되면 Django 가 실행시에 오류만 내뱉을뿐…
그래서 결국 src 폴더를 만들어 주고 실제 서비스하는 내 가상서버에서는 체크아웃 받을때 세부 경로까지 지정해준다.
이때 settings.py 파일은 물론 제외하고 ^^ㅋ 윈도우 환경에서와는 템플릿 경로와 디비 설정부분이 다르니까

이제 이클립스에서 Django 개발서버를 시작해보자 !!
manage.py 를 열어서 F11 을 누르면 디버그가 된다~ 근데 오류가 나지요 ㅋㅋ
이제 메뉴에서 RUN->Debug Configuration 을 클릭하면
Python Run 밑의 <프로젝트이름> manage.py 가 있다.
여기서 탭중에서 arguments 탭을 클릭후 다음과 같이 입력 runserver –noreload
여기서 runserver 는 서버를 실행하는걸 의미하고,
noreload 에 대한 설명은 아래… ㅋ; 대충 auto-reloader 를 중지 시킨다

Use the --noreload
option to disable the use of the auto-reloader. This means any Python code
changes you make while the server is running will not take effect if
the particular Python modules have already been loaded into memory.

파이썬 코드가 바뀌었을때 자동으로 로드 하지 않는다는것인데, 디버깅을 위해서는 이렇게 해주어야 된다.
파이썬 코드가 바뀔때마다 자동으로 디버깅 되게 하려면 방법은 있는데
리모트 디버거를 이용해서 (http://www.fabioz.com/pydev/manual_adv_remote_debugger.html) 하면 된다고 하지만
소스코드 중간중간에 import pydevd; pydevd.settrace() 이걸 넣어주어야 하는 엄청난 단점이 있다.

리모트 디버거를 사용하지만 auto-reload 를 사용하면서 소스코드에 추가없이 디버깅 하는 방법이 있는데
(http://bear330.wordpress.com/2007/10/30/how-to-debug-django-web-application-with-autoreload/)
이 방법은 manage.py 파일을 수정해서 하는 방법이다.
아직 나에게 그닥 필요한것 같지 않아 자세한 설명은 생략~~; 안써봐서

auto-reload 가 필요한 개발상황은 위 링크의 문서에도 있듯이 로그인을 해야하는 경우가 있다고 할 수 있다.
noreload 일 경우 일일이 해당 페이지로 가기 위해 로그인 하는 불편한 과정이 존재하기 때문에~~
나도 조만간 하게 될듯? 이건 개발자가 얼마나 게으르냐에 따른거겠지… 개발자는 게을러야 된다고 하던데 ^^ㅋ

서버 중지는 빨간색 버튼 누르면 중지 된다.

49846bce852a09O Django 를 위한 IDE 설정(이클립스)

Django 개발 서버 실행시 콘솔에 표시

6. SVN 등록
이제 잘은 되는데 새로 생성한 Django 프로젝트를 SVN 으로 import 해야 된다.
굳이 여기서 안하고 서버상에서 이미 있던것을 해도 되는데 윈도우로 다운받아서 다시 하는 이유는
이클립스 설정까지 모두 SVN 으로 관리하고자 하는 부분 때문이다.

이클립스에서 잘 실행되나 확인해본후에 이클립스 프로젝트를 SVN 으로 import 했다.
구체적으로 말하자면 프로젝트에서 마우스 오른쪽 버튼 -> team -> share project
이렇게 하면 svn 연결창이 뜨는데 여기서 미리 생성해놓은 가상서버의 svn 프로젝트를 선택했더니 끝 !!
이제 이클립스의 package 탐색창에서 옆에 리비전넘버가 보인다 ^^ 끝~

참고로 이클립스에서 본 내꺼 SVN 저장소 구조
49846877a439a9M Django 를 위한 IDE 설정(이클립스)

7. 마치며…
이런 글을 쓰면서 보기 쉽게 정리하는건 참 어려운거 같다.
특히 나같이 이런 저런 자잘한 이야기도 막 쓰는 스타일의 사람에게는 말이다.
그런데 이렇게 정리하는글 자주 쓰다보면 나만의 포맷도 생길것 같고 해서 자주 쓰기로 햇다 ^^ㅋ
이미 설치 완료후에 정리하는 글이라서 중간에 빼먹은게 있을수도 있기 때문에
이글을 참고해서 설치하다가 잘 안되는 부분이 있으면 댓글로 알려주시면 감사하겠습니다 ~~

설치하는데 대략 6시간정도 걸린것 같고(어떤 에디터 사용할지 고민하느라 4시간 걸린듯…)
이 문서를 쓰는데 4시간 걸린것 같다 ;;;
다시 복기 하면서.. 링크도 걸고 하는게 이렇게 힘들줄이야 ~~;

참고했던 글 링크(거의 이대로 따라했다 ^^)
http://penkin.wordpress.com/2007/08/08/eclipse-for-django/
http://penkin.wordpress.com/2007/08/20/django-with-pydev/
http://pydev.blogspot.com/2006/09/configuring-pydev-to-work-with-django.html

잡소리…
아프리카 방송 알리미(Afreecom)에서 방금 김이브 방송 시작했다고 문자왔는데..
지금 KBS1 에서 하는 다큐3 보느라… 아프리카 김이브님을 포기하고있다.;;
4시간동안 쓰느라;; 지금은 김이브님과 함께 ㅜㅜ 역시 이뻐.. 오늘 화장했다는 ;;ㅋ
음냥.. 방금 문자로 윰댕님도 방송한다고 … 윰댕님 방송으로 갈…? ㅠㅠ 행복한 고민
아무래도…… 윰댕님 방송으로 갈듯? ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
(지금 포팅 하려고 하는것도 사실은 Afreecom 이다… 돌아가기는 하는데 너무 불편해서)