Top/Top/Editor/emacs/python開発環境

目次

python 開発環境

環境構築

lint の設定(flycheck を使用)

  1. flycheck の導入
    • flycheck が導入済みであれば、flycheck のみで静的解析が実行される為、他に特に設定は必要ない。(別途手動インストールなどした pylint を flycheck で使うようにしたければ、そのように設定することもできる)
    • debian パッケージを導入する場合は、 elpa-flycheck をインストールする。
    • 又は、開発リポジトリを取ってきて、宜しく配置する(但し、依存するリポジトリも取ってくる必要がある):
      https://github.com/flycheck/flycheck.git
      https://github.com/magnars/dash.el.git
      https://git.savannah.gnu.org/git/emacs/elpa.git
  2. flycheck を設定する
    • ディストリビューションのパッケージを導入する場合、特にすることはない筈。
    • 手動でリポジトリを取ってきた場合の設定例は以下の通り:
      (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/elpa/packages/company") load-path)) ; depended: dash
      (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/dash") load-path))
      (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/flycheck") load-path))      ; flycheck
      (require 'flycheck)
      
      ;; エラーをツールチップ表示する
      (with-eval-after-load 'flycheck
        (flycheck-pos-tip-mode))
      
      (add-hook 'after-init-hook #'global-flycheck-mode)

formatter の設定

autopep8 の導入

isort の導入

autopep8 と isort の設定

  1. python-mode 固有の設定になるので、ひとまとめにした設定ファイル python-mode.conf.el を作る。
    ;;; python-mode.conf.el --- settings for python-mode
    ;;; Commentary:
    ;;;    see also: https://qiita.com/fujimisakari/items/74e32eddb78dff4be585
    ;;; Code:
     (setq python-mode-hook
           #'(lambda ()
               (if (which-function-mode nil) (which-function-mode)) ; ; 現在の関数名をモードラインに表示
    
               ;; formatter
               (require 'py-autopep8.conf)
               ;; clang-format.conf.el で設定したキーに合わせておく
               (define-key python-mode-map (kbd "C-c i") 'py-autopep8-region)   ; 選択リジョン内のコード整形
               (define-key python-mode-map (kbd "C-c u") 'py-autopep8)          ; バッファ全体のコード整形
    
               ;; import 文を適切な順序に自動で sort する
               (require 'py-isort.conf)
    
               ;; linter
               ;; (when (expand-file-name "pylint") ; システム上に pylint があるときだけ
               ;;   ;; flycheck で使う linter の設定
               ;;   ;; flycheck では勝手に linter を探してくれるらしく、パスの通ってない
               ;;   ;; ところに置かれている物を使うのでない限り、以下の linter を指定する設定は不要な模様
               ;;   ; (setq flycheck-python-pylint-executable "pylint") ; for flycheck
               ;;   ; (setq flycheck-python-flake8-executable "flake8") ; for flycheck
               ;;   ; (setq flycheck-python-mypy-executable "mypy") ; for flycheck
               ;;   )
               )
           )
    
    (provide 'python-mode.conf)
    ;;; python-mode.conf.el ends here
  2. これを、${HOME}/.emacs.d/init.el 等から適当に呼ぶようにする。
    ; python-mode 関係の設定
    (require 'python-mode.conf)

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-01-22 (月) 00:08:49