[PyCharm] Python IDE Develop Tip

그동안 여러 가지의 프로그래밍 언어가 있고,
그 것보다 조금 더 작은 수의 통합개발환경(IDE)가 존재하였습니다.

기억에는 아마도 RAD(Rapid Application Development) 개발 툴이 나오고,
Pascal 언어의 Delphi가 제대로 된 2-way coding (View widget <=> code)을 
지원하면서 개발의 생산성, 경제성, 신뢰성 등등 측면에서 IDE의 필요성이
더할나위없이 중요해 졌습니다.

다시 말해서 더 좋은, IDE를 선택하여 개발한다는 의미는 자연스럽게
개발의 생산성, 경제성, 신뢰성 모두가 더 나아진다는 것을 의미합니다.

또한 개발 환경에 있어서 Windows, Mac, Linux를 모두 지원해야 하는 필요성이 있습니다.
개발자에 목적, 취향 등에 따라 자신에 맞는 운영체제 환경에서 개발하고
크로스 플랫폼에 따라 다른 운영체제에 deploy 되는 경우도 많습니다.

아뭏든 일단 가격 이라는 면을 제외하고 위에서 이야기한 여러 운영체제에서
다양한 환경을 지원하는 IDE 중에 이클립스가 제일인 줄 알았습니다.
하지만 상용인 IntelliJ IDEA IDE를 개발한 www.jetbrains.com 에서
그렇게 다양한 IDE를 제공하는지는 최근에야 WebStorm을 살펴보면서 알게되었습니다.

Java를 위한 IntelliJ 뿐만 아니라, 자바스크립트 및 Node.js 등을 위한 웹 개발환경인 WebStorm,
PHP 개발을 위한 PHPStorm, 심지어는 .NET용 및 iOS 개발을 위한 Object-C 지원 IDE 까지.
최근에 빠르게 변화하고 있는 개발 환경 및 MVC, MVVM 등의 플랫폼에 대한 지원 등등
정말로 개발자를 위한 노력을 많이 하고 있는 회사라는 생각이 들었습니다.

이클립스에서도 pydev 플러그인을 추가하여 파이썬, Django 및 Google App Engine 등을
개발할 수 있었는데, 똑 같은 프로젝트 및 Python용 WebApp 개발 환경인 플래스크 프로젝트까지도
지원하고 있습니다.


다음은 간단 PyCharm을 간단히 사용해 본 것입니다.

제일 처음 기동을 시키면 나타타는 창입니다. 오른편에 여러 가지 플러그인이 있어,
실행을 시킬 수 있도록 되어 있습니다.

처음에는 위와 같이 "No Python interpreter selected" 라고 나옵니다. 인터프리터의 오른편 ... 단추를 누릅니다.

위와 같이 나타난 창에서 가운데 왼편의 "+" 단추를 눌러 위와 같이 나와있는 Python 중에 하나를 선택합니다.
(현재 배포된 리눅스와 가장 모듈 호환이 잘되는 2.x 마지막 버전대인 2.7을 선택했습니다)

하단에 pip및 VirtualEnv 를 설치하라고 되어있는데, 이는 내가 개발환 파이썬 프로그램이 운영환경으로 디플로이할 때
필요에 따라 설치할 수 있습니다.

이제 인터프리터가 설정되었고, "OK"로 넘어갑니다. (최초 한번만 지정해 주면 됩니다)

이전에 지정했던 프로젝트에다 test/first 라는 폴더를 만들어 그 안에 test00.py 파일을 만들어 봅니다.

맥에서는 디폴트 키바인딩인 경우 "Command+," 혹은 작업 환경 상단 툴바에서 제일 오른편에서 두번째 있는 스패너 표시를 눌러
나타나는 설정창에서 좌측 상단에 "tab" 이라고 입력하고 Python 언어의 탭을 선택하고 위와 같이
"Use Tab Character", "Smart tabs" 를 선택했습니다. 설정 자체가 상당히 구체적이 깔끔하게 되어 있습니다.
(이클립스에 비해서 말이지요)

편집을 간단히 하다가 최상위 메뉴의 Refactor > Rename 을 눌러 위와 같이 해당 함수 이름만 Intelli-sense로 수정할 수 있습니다.

위의 모습은 간단히 브레이킹 포인트를 하나 잡고 디버깅 해 본 모습입니다. Variables 가 보다 상세히 잘 나오고,
Watchs에 특정 익스프레션을 계속 지켜보고 있을 수 있습니다.
또한 PyDev에 비하여 코드 자동완성 기능이 상당히 좋습니다.


이제 Python에서 Coverage 라는 기능에 대해서 살펴보겠습니다.
파이썬에서 작성된 함수나 클래스, 임포트 된 모듈 등이 항상 모두 호출되는 것은 아닙니다.
Coverage는 어떤 모듈이 얼만큰 사용되었는가 정량적으로 보여주는 기능입니다.

아까와 같은 설정에서 위의 Coverage 항목을 체크합니다.

(커버리지를 설치하겠냐고 물었던 곳에서 설치하고 재시작 했었던 것 같습니다)
위와 같이 "Run With Coverage"를 이용하여 실행합니다.

그 다음 우측의 "Generate Coverage Report"를 누릅니다.

특정 폴더를 만들어 그 결과를 저장한 다음, 결과를 열면,
위와 같은 식으로 되어 있습니다.
그런데 테스트로 그냥 만들었더니 모두 사용한다고 되어 있는데,
참조하지 않는 함수를 하나 만들어 커버리지를 돌렸더니...

위와 같이 사용하지 않는 함수가 나타났습니다.

또한 처음에는 에디터 창이 이클립스처럼 분할되지 않아 걱정을 했었는데,
그럴 필요가 없었습니다.

위에 이미지는 우분투에서 돌린 것인데 동일하게 다른 OS의 PyCharm에서 적용됩니다.
Window > Editor Tab > Split ... 를 이용하여 분할 할 수 있습니다.


다시 한번 다양한 IDE가 있고 이를 잘 사용하는 것이 중요하다는 것을 강조하면서...

어느분께는 도움이 되셨으면 합니다.




핑백

덧글

  • 파이썬나그네 2013/06/09 16:07 # 삭제 답글

    이클립스보다 pycharm 이 나을까요? 가격을 보니까 후덜덜이던데..
    자동완성 기능이 약간 불만족스러웠는데...
    pycharm이 훨씬 좋다면 바꿀 의향도 있습니다..
    글 쓰신 것 보니 끌리네요.
    좋은 글 쓰신 것 잘 봤습니다.
  • 지훈현서아빠 2013/06/10 07:57 #

    저도 사용한지 일년 정도 되어 가는 것 같습니다.
    PyDEV에 비해서도 더 나은것 같구, 이제는 메인 개발 환경이 되어 버렸네요~
    도움이 되셨다면 저의 보람입니다~
  • x9903 2013/10/24 10:59 # 삭제 답글

    회사분도 pyCharm 추천 해주시더라구요.
  • 지훈현서아빠 2013/10/25 11:19 #

    같은 회사는 아니지요? ㅎㅎ
    도움이 되셨다면 저의 보람입니다.
  • 아리수 2014/02/10 09:55 # 삭제 답글

    좋은 글 잘 읽었습니다. ^^

    윈도우 환경에서 2.7, 3.3 버전이 설치되어 있습니다.
    setuptools, pip 등을 설치하려고 하는데 버전별로 설치를 해야 하나요?

    2.7로 작업할 때도 있고, 3.3으로 작업할 때도 있는데
    상이버전의 Python을 효율적으로 활용할 수 있는 방법에 대해 조언 부탁드립니다. ^^.
  • 지훈현서아빠 2014/02/10 10:04 #

    설정>Python Interpreters 항목에서 로컬에 있는 2.7 과 3.3을 모두 등록시켜 놓고,
    그 상단 설정에서 현재 프로젝트 인터프리터를 선택하시면 됩니다.
    로컬로 virtualenv 환경을 설정하셔도 되구요.
    http://mcchae.egloos.com/11071559
    원격 디버깅도 가능합니다.
    http://mcchae.egloos.com/11065987

    도움이 되셨다니 저의 보람입니다~ ^^
  • 초보유노 2014/05/07 01:06 # 삭제 답글

    안녕하세요, 파이썬 자료 잘봤습니다.
    공부하는 중인데, 파이참이란 녀석 참 화려하고 기능도 많네요. (여기서 보고 바로 인스톨했습니다)
    한가지 불편한점이, IDLE 사용할때는

    import os
    os.chdir('c:/ 정도를 치고 tab 을 누르면 선택가능한 폴더들이 자동으로 나왔는데

    파이참에서는 그런 기능이 없는건가요?
    (현재 파이참은 디폴트 설정에서 따로 벼경한건 없습니다)

    open('code.txt') 등 이런식으로도 IDLE 에서는 바로 선택 가능한 목록들이 나오고 선택 가능했는데
    파이참에서는 이렇게 폴더나 파일들의 목록을 tab 키로 볼수 없는건지 궁금합니다.

  • 지훈현서아빠 2014/05/07 09:17 #

    죄송한데 그런 기능을 사용해보지 않아
    지원 안되는 것으로 알고 있습니다.
    나중에라도 알게되면 답글을 올려놓겠습니다.~
  • 풀코딩 2014/10/16 10:16 # 삭제 답글

    오 이기능 찾고있었는데 intelliJ도 되네요. 감사
댓글 입력 영역

구글애드텍스트