Emacs의 jedi 뷰어 jedi-direx를 사용해보기

5275 단어 파이썬jediEmacs

소개



시험한 환경에 대해서는 하기.
  • OS
    macOS High Sierra(10.13.2)
  • GNU Emacs
    25.3.1
  • emacs jedi 패키지
    0.2.7
  • 파이썬
    2.7.12, 3.6.2

  • jedi은 Emacs에서 Python을 코딩 할 때 코드 완성, 정의로 이동, 도움말 표시 등을 허용하는 패키지입니다.
    (제다이라는 이름이 마음에 든다)

    公式サイトの画像

    다만, 공식 사이트의 Quick Start대로 해도, 왠지 M-x jedi:install-server 곳에서 에러가 나 버렸으므로, 아래와 같은 사이트를 보면서 pip로 직접 jedi와 epc를 인스톨 했습니다.
    htp // d. 하테나. 네. jp/응-찬 l/20131220/1387551080

    pip로 설치한 jedi와 epc의 버전은 아래와 같습니다.
  • jedi
    0.11.1
  • epc
    0.0.5

  • 이 jedi이지만 extension에서 아래와 같은 코드 뷰어가 있으며, 이것이 jedi-direx입니다.

    jedi-direx

    jedi-direx 설치



    실제로 jedi-direx를 설치하고 사용해 보았습니다.
    먼저 package-install을 사용하여 설치.
    M-x package-install RET jedi-direx RET
    

    설치된 버전은 20140310.236이었습니다.

    그리고 아래를 .emacs에 추가하고 python 파일을 python-mode로 열어 보았습니다.
    (setq jedi:complete-on-dot t)
    (define-key python-mode-map "\C-cx" 'jedi-direx:pop-to-buffer)
    (define-key python-mode-map "\C-c\C-x" 'jedi-direx:switch-to-buffer)
    (add-hook 'jedi-mode-hook 'jedi-direx:setup)
    

    그러나 여기에 다음 오류가 발생했습니다.
    deferred error : (error "\"AttributeError(\\\"module 'jedi.api' has no attribute 'defined_names'\\\",)\"")
    

    분명히 jedi를 M-x jedi:install-server RET 대신 pip으로 직접 설치했기 때문에 버전이 맞지 않는 것 같습니다.
    이 defined_names는 이미 jedi의 0.11.0에서 삭제되었습니다.
    htps : // 기주 b. 코 m / tkf / 에마 cs - 지 ぢ / 이스에 s / 293

    따라서 0.10.2를 설치.
    $ pip uninstall jedi -y
    Uninstalling jedi-0.11.1:
      Successfully uninstalled jedi-0.11.1
    $ pip install jedi==0.10.2
    Collecting jedi==0.10.2
      Using cached jedi-0.10.2-py2.py3-none-any.whl
    Installing collected packages: jedi
    Successfully installed jedi-0.10.2
    

    Emacs를 다시 시작하고 다시 시도하면 오류가 발생하지 않았으며 C-cx에서 안전한 jedi-direx 뷰어가 표시되었습니다.
    TAB 키로 트리를 확장하고 o 키를 누르면 해당 라인으로 날 수 있습니다.
    사용하기 쉽기 때문에 사용하고 싶습니다.



    2018/1/8 추가M-x jedi:install-server 실패한 이유는 단순히 virtualenv가 들어 있지 않기 때문입니다.
    pip install virtualenv
    

    공식 문서에 기재되어 있다.

    수동으로 넣은 패키지를 제거한 후,
    pip uninstall jedi epc
    
    M-x jedi:install-server를 입력하여 성공적으로 설치할 수 있습니다.

    그건 그렇고, 설치된 파이썬 패키지의 위치는 다음과 같습니다.
    .emacs.d/.python-environments
    

    그러나 이 방법으로 설치해도 결국 Emacs의 jedi-core 패키지 내의 jediepcserver.py가 지원되지 않으므로 다음과 같은 오류가 발생합니다.
    deferred error : (error "\"AttributeError(\\\"module 'jedi.api' has no attribute 'defined_names'\\\",)\"")
    

    이 건에 대해서는 이미 수정의 풀릭이 나왔습니다.

    좋은 웹페이지 즐겨찾기