Spyder IDE (Python의 Matlab과 유사한 개발환경)

Spyder IDE는 Open-source로 개발되고 있는 IDE로써 과학 및 공학 연산에 최적화된 Python 전용 IDE이다. Spyder 3의 경우 버그가 꽤 있었고 UI도 불편한 부분이 있어서 사용하기 쉽지 않았지만 Spyder 4가 되면서 많은 것이 개선되었다.

Spyder 4에서는 많은 bug가 해결되었고 Dark theme도 지원하고 있어서 Matlab에서 Python으로 전환하는 사람들에게 가장 추천할 만한 IDE이다.


1. Dark theme

Dark-theme
Dark Theme

눈의 피로가 빨리 쌓이는 사람들에게는 Dark theme만큼 유용한 UI도 없다. Spyder4에서는 오랫동안 개발되어 온 QDarkstyle을 이용하여 Dark-theme를 구현하였기 때문에 색상이 조화롭고 가독성도 나쁘지 않다.


2. 자동 완성기능 (Auto complete)

Auto complete
Auto complete

lint, autocomplete를 지원하는 python-language-server, Kite 가 개발되면서 Spyder에서도 자동완성 기능을 지원할 수 있게 되었다.

Docstring에 입력, 출력 변수 Type을 정하면 함수 내부 변수와 함수 출력 변수에 대한 자동 완성 기능을 지원한다.

Auto complete of function
Auto complete of function


3. 변수 탐색기

Variable-explorer
변수 탐색기

Matlab과 유사한 변수탐색기를 지원한다.

변수탐색기에서는 사진, csv, spyder 자체 저장 포맷등을 불러올 수 있다. 물론 mat파일도 지원한다.

Import of Variable explorer
Import of Variable explorer

Mat에 struct가 저장되었을 경우 python의 list로 변환되고 cell의 경우 dict로 변환된다. 행렬은 당연히 numpy로 메모리에 저장된다.


4. Cell Mode

Cell
Cell 모드

Matlab과 동일한 Cell 모드를 지원하고 Cell 실행, 단축키를 이용한 Cell 이동, Cell Debug도 가능하다. 단 Spyder에서는 # %%를 이용해야 한다.


5. Outline

Outline
Outline

코드가 길어지면 특정 부분을 찾는 데 시간이 오래 걸린다. 하지만 Outline은 코드의 구조를 한눈에 보여주므로 쉽게 코드를 찾아갈 수 있게 해준다. Outline에서는 Cell뿐만 아니라 함수, 클래스, 특정 주석(#—)을 지원한다.


6. Plot 창

Plot
Plot

Plot을 모아서 보여주는 기능이 추가되었다. Matlab만 쓰던 사람들은 처음에 어색하고 불편할 수도 있지만 꾸준히 사용하다 보면 이것의 유용함을 느끼게 된다. 한번에 50개 이상씩 Plot을 하거나 Debugging이 끝나고 결과만 자주 보는 Script의 경우에 매우 유용한 기능이다. 클릭 한번으로 Plot 창에 출력된 그림들을 모두 저장할 수도 있다.

Spyder에서는 Matlab 처럼 Figure별 창으로 띄우는 것도 지원한다. 환경설정에서 Figure Popup 방식은 영구적으로 바꿀 수 있고 일시적으로 변경시에는 명령창에서 Magic command를 이용하면 된다.


7. Help

도움말
도움말

함수에 주석(docstring)이 있는 경우 Rendering 하여 도움말을 보여준다. 편집기 또는 명령창에서 원하는 명령에 cursor를 위치시킨 후 단축키를 입력하면 쉽게 도움말을 볼 수 있다.


8. Auto Docstring

Auto docstring
변수 탐색기

코딩을 오래 하다 보면 주석을 잘 정리하는 것이 얼마나 중요한지 깨닫게 된다. Numpy, Google 형태의 주석을 자동으로 만들어주는 기능이 추가되어 코드 관리가 더욱 쉬워졌다.

위에서 언급하였듯이 Docstring에 Type을 지정하면 함수 내에서도 자동완성기능 사용이 가능하다. 또한 Docstring에 Type을 정의하고 MyPy를 적용하면 Coding중에 Type Mismatch도 확인 할 수 있다. Python에서 Docstring은 선택이 아닌 필수사항으로 생각하는게 좋다.


9. User snippets

User snippets
snippet

사용자 편의를 위한 user snippets을 지원한다.

snippet.json


10. Python Opensource

Spyder IDE는 가독성이 좋은 Python으로 작성된 Opensource이고 Maintainer가 지속해서 Source를 관리하고 있기 때문에 코드만으로도 Spyder IDE의 Source 구조를 쉽게 파악할 수 있다. 쉽게 이해할 수 있기 때문에 내가 원하는 기능을 Spyder에 추가해서 사용하는 것도 어렵지 않다. 나는 아래 2가지 기능을 코딩하여 사용하고 있다.


10.1. Auto Import

Spyder 개발팀에서 개발 계획을 가지고 있지만 현재 다른 개발에 바빠 auto import가 언제 개발될 지 모르는 상황이다. 그래서 내가 개발하여 사용하고 있다.

  • undefined name을 모두 Auto import
Auto docstring
Auto Import 1
  • Code Completion에 import 명령 추가
Auto docstring
Auto Import 2

autoimport_for_python.json

get_function_name.py


10.2. Vim binding

Vim을 완벽하기 지원하지는 않지만 내가 필요한 vim key를 추가하여 사용 할 수 있다.

spyder_okvim