본문 바로가기

Tech Note

Doom Emacs에서 Python 개발 환경 설정하기

반응형

Doom Emacs는 상당히 설정이 잘 되어 있는 설정 팩이지만 여기에 Python 모듈만 집어넣는다고 파이썬 개발 환경이 원하는 대로 완벽하게 잡히지는 않습니다. 이 글은 Doom Emacs에서 Python 개발 환경을 설정하기 위한 주관적인 기초 설정을 하는 법을 정리합니다.

참고로 이 글을 쓰는 사람은 macOS가 돌아가는 맥을 사용 중입니다. 따라서 윈도 환경에서는 좀 차이가 날 수 있습니다.

init.el

Doom Emacs 설정의 가장 기본은 바로 이 init.el에서 시작되지요. SPC f p 키를 눌러서 init.el 파일을 쉽게 열 수 있습니다. 이 파일에는 각 모듈을 카테고리별로 정리해놓고 주석만 풀어주면 바로 사용할 수 있게 준비되어 있습니다.

개인적으로는 syntax 모듈과 python 모듈에 몇몇 플래그를 추가하여 사용합니다.

:checkers
syntax

:lang
(python
 +lsp
 +pyenv
 +poetry
 +pyright)

syntax 모듈은 파이썬 문법 체크 기능을 사용하려면 필요합니다. 이 외에 python 모듈의 플래그 중에 pyenvpoetry, pyright는 사용하지 않는다면 추가하지 않아도 무방합니다. 다만 LSP는 사용하는 편이 좋다고 생각됩니다.

이 설정을 init.el에 추가한 후 아래와 같이 설정 동기화를 진행하면 필요한 모듈들이 설치됩니다.

~/.emacs.d/bin/doom sync

LSP 서버 설치 및 설정

LSP(Language Server Protocol) 서버는 세 가지 선택지가 있습니다. 아래의 여러 선택지 중 마음에 드는 것을 골라서 설치 및 설정한 후 역시 sync 작업을 진행해 주면 됩니다.

Python Language Server(pyls)

pyls는 순수하게 커뮤니티에서 오픈소스로 개발된 서버입니다. 아래와 같이 pip를 이용해 쉽게 설치할 수 있습니다.

pip install 'python-language-server[all]'

상황에 따라 pip 대신 pip3 등을 사용해야 되는 경우도 있습니다. Homebrew로 설치한 Python 3.x를 주력으로 사용한다면 pip3로 설치하는 것이 좋습니다.

개인적으로 과거에 겪었던 불안정한 모습이 아직도 기억에 남아있어서 최근에서는 써보지를 않았습니다.

Microsoft Python Language Server(mspyls)

이름에서 볼 수 있듯이 마이크로소프트에 의해 개발된 서버입니다. vscode에서도 사용되기 때문에 친숙할 수도 있는 서버지요.

이 서버는 설치 방법이 복잡한 편이어서 Doom Emacs 자체에서 설치 방법을 제공해주는데 SPC : 혹은 M-x 키를 눌러서 lsp-install-server 명령을 입력하면 여러 선택지가 뜹니다. 여기서 mspyls를 선택하면 알아서 설치가 진행됩니다.

설치 후에는 SPC f p 키를 이용해 config.el 파일을 열어서 아래와 같은 설정을 어딘가 추가해주면 됩니다.

(after! lsp-python-ms
  (set-lsp-priority! 'mspyls 1))

개인적으로 mspyls는 CPU를 과도하게 먹는 경우가 자주 있어서 요즘은 사용하지 않습니다. 물론 지금은 많이 바뀌었을 수도 있습니다.

Pyright

Pyright 역시 마이크로소프트에 의해 개발된 서버입니다. 다만 차이가 있다면 완벽한 오픈소스 라이센스를 가지고 있다는 점이지요.

Pyright는 특이하게도 npm을 이용해 설치할 수 있습니다.

npm install -g pyright

Pyright를 사용하려면 위의 init.el 설정 부분에서 +pyright 플래그를 추가해주어야 합니다.

기타 의존 패키지 설치

이제 필요한 파이썬 패키지를 설치해줍니다. 개인적으로는 아래 커맨드 한 줄로 해결합니다.

pip install flake8 isort nose pytest pyflakes mypy

역시 Homebrew에서 설치한 Python 3.x를 사용한다면 pip 대신 pip3를 사용하는 편이 좋습니다.

이 패키지들이 모두 필수로 필요한 것은 아니지만 있다고 손해볼 것은 없다고 생각됩니다.

Python 바이너리 설정

이 단계는 필수적이진 않습니다. 만약 시스템에서 사용하는 python 커맨드가 자신이 사용하려면 버전과 맞지 않을 경우가 있을 수 있습니다. 예를 들어 저는 Homebrew로 설치한 Python 3.x를 주력으로 사용하는데 Doom Emacs가 기본적으로 호출하는 파이썬 인터프리터는 python이라는 이름입니다. 따라서 이를 원하는 대로 맞춰주는 과정이 필요할 수도 있습니다.

아래 설정은 python3 커맨드를 파이썬 인터프리터로 설정하는 코드입니다. 이 코드를 config.el 어딘가에 넣어주면 됩니다.

(after! python
  (setq python-shell-interpreter "python3"
        flycheck-python-pycompile-executable "python3"
        doom-modeline-env-python-executable "python3"))

이렇게 하면 Doom Emacs에서 호출하는 파이썬 인터프리터나 패키지 명령들이 모두 이 버전에 해당되는 것으로 설정됩니다.

결론

이렇게 설정하면 여러 기본 기능을 비롯하여 문법 체크나 REPL 등을 사용할 수 있습니다.

  • SPC c 키를 눌러보면 코딩과 관련된 기능들을 찾을 수 있습니다.
  • 문법체크 및 프로젝트와 관련된 몇 가지 기능은 Projectile에 의해 프로젝트로 인식되는 곳의 .py 파일을 열면 자동으로 동작합니다.
  • REPL은 SPC o r 혹은 SPC o R 키를 참고합시다.

필요하다면 REPL을 위해 ipython을 추가로 설치하는 것이 좋을 수도 있습니다만 이건 개인 기호에 맞게 하면 될 것 같습니다.

마지막으로 이 내용들은 Doom Emacs가 개발되면서 바뀔 수도 있기 때문에 공식 저장소의 문서를 먼저 읽어보는 편이 좋을지도 모르겠습니다.

 

hlissner/doom-emacs

An Emacs framework for the stubborn martian hacker - hlissner/doom-emacs

github.com

 

Doom Emacs 라는 것을 설치해봤다

TL;DR 설치 방법은 공식 문서를 보시거나 혹은 Doom Emacs 설치하기 글을 참고하세요. Doom Emacs라는 것을 설치해봤다 저는 Emacs와 Vim을 10년 이상 써온 늙은(?) Emacer이자 Vimmer입니다. 둘 다 장단점이 있.

seorenn.tistory.com

반응형