Emacs는 훌륭한 편집기입니다. 그러나 " 먼저 IDE를 필요로하는 프로그램 "이라고합니다. 따라서 최신 IDE의 모든 기능을 사용하여 PYTHON 용 광범위하게 사용자 정의 가능한 Emacs에서 IDE를 어떻게 구축 할 수 있습니까? 코드를 효과적으로 디버깅, 실행 및 컴파일하고 관리 할 수 있기를 원합니다. 지금까지 나는 Elpy 패키지를 설치 한 주제를 읽었지만 이것을 가능하게하기 위해 알아야 할 것과 다른 일이 확실하지 않습니다.
Emacs는 훌륭한 편집기입니다. 그러나 " 먼저 IDE를 필요로하는 프로그램 "이라고합니다. 따라서 최신 IDE의 모든 기능을 사용하여 PYTHON 용 광범위하게 사용자 정의 가능한 Emacs에서 IDE를 어떻게 구축 할 수 있습니까? 코드를 효과적으로 디버깅, 실행 및 컴파일하고 관리 할 수 있기를 원합니다. 지금까지 나는 Elpy 패키지를 설치 한 주제를 읽었지만 이것을 가능하게하기 위해 알아야 할 것과 다른 일이 확실하지 않습니다.
답변:
Emacs의 기본 Python 모드에는 열등한 Python 셸을 기반으로 한 코드 완성을 포함하여 여러 가지 기능이 있으므로 패키지를 추가하지 않고도 기본 IDE로 사용할 수 있습니다. 다른 핵심 Emacs 함수도 Python과 함께 사용할 수 있습니다. 예를 들어, M-x compile
/ M-x recompile
를 사용하여 테스트를 실행할 수 있습니다. M-x pdb
Python 디버거를 실행할 수 있으며 Emacs의 gud 환경 과 통합되어 실제로 인라인 중단 점을 얻습니다.
이를 확장하기 위해 Emacs를위한 세 가지 주요 패키지가 있습니다.
그들은 모두 거의 동일한 기능을 제공합니다.
이 외에도 Emacs는 많은 워크 플로우를 지원할 수 있지만 단일 워크 플로우를 규정하지는 않습니다. 따라서 다음 단계는 파이썬을 어떻게 사용하고 있는지에 달려 있습니다. 여기서 가장 좋은 방법은 좋은 Python 워크 플로를 파악한 다음 워크 플로 단계를 구체적으로 도와주는 Emacs 패키지를 찾는 것입니다.
예를 들어 virtualenvs (Elpy, pyvenv와 함께 제공)와 함께 사용할 수있는 여러 패키지가 있습니다. Emacs-Jedi에는 유용한 코드 탐색 모드 가 있습니다. IPython을 많이 사용하는 경우 Emacs 용 IPython Notebook 이 있습니다. Django 개발 등을위한 특별 지원 모드가 있습니다. http://melpa.org/ 로 이동하여 Python을 검색하여 아이디어를 얻을 수 있습니다.
파이썬 이외의 경우 일반적으로 개발에 도움이되는 몇 가지 추가 Emacs 패키지를 활용할 수 있습니다. Projectile 은 프로젝트 관리를위한 일반적인 패키지로, 프로젝트 검색 또는 테스트와 구현 간 이동과 같은 여러 가지 흥미로운 기능을 제공합니다. 선택한 IDE 패키지의 종속성으로 아직 설치되지 않은 경우 코드 생성을위한 지능형 스 니펫을 제공 하는 YASnippet 을 사용할 수도 있습니다 . 기본 스 니펫 컬렉션에는 Python에 대한 많은 스 니펫도 있습니다.
그러나 위의 주요 IDE 패키지는 정상적인 환경을 제공합니다. 다음 단계는 특정 워크 플로에 따라 크게 다릅니다.
(전체 공개 : 저는 Elpy의 저자이므로 위의 내용을 읽을 때이를 고려하십시오.)
elpy
매일 사용 하고 " M-x pdb
Python 디버거를 실행할 수 있습니다 " 라고 말할 때 대답에 대한 빠른 질문 이 있습니다. 파이썬 버퍼가 있는데 미니 버퍼에 M-x pdb
라는 메시지가 나타납니다 "Run pdb (like this): pdb my_file.py"
. 나는 누르면 RET
: 나는 "ImportError를을 : 없음 모듈 이름 pdb.pdb을 'PDB 패키지 아니다"얻을이 날을 제공하는 PIP와 PDB를 업그레이드 한 후 최신 파이썬 3.4 함께$ pip freeze | grep pdb => pdb==0.1
pdb
가 발견되지 않았지만 python
로컬에서 발견되면 다음 M-x pdb
과 같이 사용하여 pdb를 실행할 수 있습니다. "pdb 실행 (이와 같이) : python -m pdb my_file.py`
악의적 인 사용자가 spacemacs 를 시도하도록 권장 합니다.
그것은 화려한 파이썬 레이어를 가지고 있습니다 : https://github.com/syl20bnr/spacemacs/tree/master/layers/!lang/python
현재로서는 다음이 포함됩니다.
설치는 엄청나게 쉽습니다. 다음 줄을 추가하십시오 ~/.spacemacs
.
(setq-default dotspacemacs-configuration-layers '(python))
dotspacemacs-configuration-layers
있습니다. 거기에 추가 :)
purpose-mode 사용 합니다 . 이를 통해 매우 견고한 환경을 정의 할 수 있습니다.
사용 elpy
, pydoc
그리고 neotree
나는 (창 오류에 이상한 일을하지 않는 의미에서) 매우 강력한 환경을 가지고있다. 이것은 gud-pdb
디버깅 에도 잘 작동 합니다.
포괄적 인 안내서는 다음과 같습니다. http://wikemacs.org/wiki/Python 바로 사용 가능한 솔루션 (Prelude 스타터 키트 , Spacemacs, 데이터 과학 솔루션 등 ), 유용한 패키지 (Elpy) 등을 나열합니다. 모든 패키지로 환경을 개선해야합니다. 개요 는 다음과 같습니다 .
가장 "IDE 별"기능입니다. Rope python 라이브러리 덕분에 이맥스가 가능합니다. 설치 및 사용하는 가장 쉬운 방법은 MELPA 의 emacs-traad 패키지입니다. 다음과 같은 특징이 있습니다.
로프는 Elpy에도 포함되어 있습니다.
리팩토링 또는 코드 조작에 도움이되는 더 간단한 도구가 있습니다. http://wikemacs.org/wiki/Python#Other_Python_.22refactoring.22_tools
예를 들어, Projectile은 훌륭합니다 (다른 답변 참조). 데코레이터 를 추가하고 , 인수를 추가 / 제거 / 편집 하고, 메소드의 이름을 바꾸거나 / 복사 / 코멘트 / 킬 / 킬하기위한 도구, 코드 생성 도구 등이 있습니다.
태그와 cscope를 사용하여 IDE로 탐색 할 수 있습니다.이 함수를 호출하는 함수 찾기, 발생 찾기 등
Emacs에는 imenu (helm-imenu), helm-swoop (버퍼의 대화식 grep), emacs-helm-ag (프로젝트의 대화식 silver searcher ) 등과 같은 훌륭한 패키지가 있습니다 .
django 러너, elpy 또는 다른 테스트를 사용하여 테스트를 실행하는 데 도움이되는 것은 Elpy입니다. 현재있는 단위 테스트 만 실행할 수도 있습니다. 매우 편리합니다! 그래서 그것을 도와주는 Hydra가 있습니다 (오류 사이의주기, 파이썬 프롬프트로 전환하십시오 ...).
이것은 Python에만 국한되지 않는 Emacs 패키지입니다. 그러나 나는 프로젝트의 어느 곳에서나 make target을 실행 하고 make 명령을 완성 하는 것을 좋아한다 . 링크
약간의 패키지가있다 들여 쓰기-도구 , 즉 명령 들여 쓰기 블록과 직접 작업 할 수 있습니다 : 이동 들여 쓰기의 다음-이전 아동 부모 블록, 들여 쓰기 / deindent / 의견 / 복사 / 현재 블록을 배 / 죽 , yaml 및 Python에도 적합합니다. 문서 및 gif 데모
장고 참조 . Elpy 는 장고 러너를 지원합니다. elpy django doc 참조하십시오 . django-mode (melpa)는 템플릿 강조, 빠른 명령, 관리 명령 완성 ,…
magithub 는 github PR을 생성하고, 이슈를 가져 와서 커밋 메시지에 참조를 삽입 할 수 있습니다. magit 는 훌륭합니다 …… http://wikemacs.org/wiki/Git
여기에 대한 답변은 spacemacs가 제공하는 대부분의 중요한 기능을 제공했지만 항상 찾을 수 없었던 한 가지 기능이있었습니다. DEBUGGING (최근까지 Spacemac과 잘 어울리는 디버깅 도구를 찾지 못했습니다)
그러면 내 스페이스 맥에 대한 디버그 워크 플로우를 어떻게 설정 했습니까?
realgud.el 패키지를 사용하여 spacemacs의 디버그 경험과 같은 IDE에 가까운 기능을 제공하는 기능 분기가 있습니다. https://github.com/CeleritasCelery/spacemacs 이 분기를 .emacs로 가져 오기만 하면됩니다. d 디렉토리에서 ~ / .emacs.d / layers / + lang / python / packages.el 파일을 변경하십시오.
디버그를 위해 spacemacs를 설정하는 자세한 단계 (심호흡)
remote add debug-layer https://github.com/CeleritasCelery/spacemacs
fetch debug-layer
checkout --track debug-layer/debug-layer
branch -a
이제 ~ / .emacs.d / layers / + lang / python / packages.el을
;; configure trepan3k as the python debugger to be used with realgud
(defun python/pre-init-realgud()
(dolist (mode '(anaconda-mode)) ;; bind trepan3k with anaconda mode
(spacemacs|add-realgud-debugger mode "trepan3k")))
열고 파일 끝에 아래 함수를 추가하십시오.
이 함수는 trepan3k 디버거를 파이썬 디버거로 사용합니다. pdb 또는 ipdb 또는 원하는 디버거로 값을 변경할 수 있습니다. trepan3k를 사용할 계획이라면 sudo pip install trepan3k
python 배포판에 사전 설치되어 있지 않으므로 pip
로 설치하십시오.
이제 다음과 같이 dotspacemacs-configuration-layers 내에서 .spacemacs 파일과 'debug'레이어를여십시오.
dotspacemacs-configuration-layers
'(
(python :variables python-enable-yapf-format-on-save t
flycheck-disabled-checkers '(python-flake8)
flycheck-checker 'python-pylint
)
debug
)
이것은 디버그 세션을 시작하고 여기에 설명 된 realgud 키 바인딩을 사용하여 중단 점을 추가하고 삭제할 수 있습니다 : https://github.com/realgud/realgud#source-window-commands
끝났습니다!