EmacsのflycheckをインストールしましたPython Ubuntu 15.04に。
ただし、ツールを使用すると、end
が原因でprint(item, end=' ')
の構文が間違っているなどの誤検知が報告されます。
これはPython 3構文であり、構文エラーはflycheckがPython 2。
Python 3に対してflycheckを設定するにはどうすればよいですか?
Githubのドキュメントでは、Python 2または3(Pythonのみ)をサポートするかどうかについては言及されていません。
また、可能であれば、elpaツールが提案しない理由を教えてください。基本Pythonタイプ。
私のinit.elファイルはここにあります:
;; init.el --- Emacs configuration
;; INSTALL PACKAGES
;; -------------------------------------
(require 'package)
;; Primary Emacs repository is MELPA
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/") t)
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))
(defvar myPackages
'(better-defaults
elpy ;; Emacs LISP Python Environment
flycheck ;; flycheck Python syntax-checking
material-theme))
(mapc #'(lambda (package)
(unless (package-installed-p package)
(package-install package)))
myPackages)
;; BASIC CUSTOMIZATION
;; -------------------------------------
(setq inhibit-startup-message t) ;; hide startup message
(load-theme 'material t) ;; load material theme
(global-linum-mode t) ;; enable line numbers globally
(global-flycheck-mode) ;; enable flycheck globally
;; PYTHON CONFIGURATION
;; -------------------------------------
(elpy-enable) ;; enable elpy
;; use flycheck, not flymake with elpy
(when (require 'flycheck nil t)
(setq elpy-modules (delq 'elpy-module-flymake elpy-modules))
(add-hook 'elpy-mode-hook 'flycheck-mode))
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(python-Shell-interpreter "python3"))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
;; init.el ends here
Flycheckには、各 サポートされている言語 のチェッカーがいくつかあります(さらに多くの コミュニティによって提供されます )。それらのほとんどすべてがバッファをチェックするために外部ツールを使用し、それらのほとんどは構成することができます。
サポートされているチェッカーとその構成方法を確認する最も簡単な方法は、イントロスペクションです。 pythonファイルを開いてflycheck-verify-setup
を呼び出すか、C-c ! v
を押します。これにより、pythonモードで使用される構文チェッカーのリストを含む新しいバッファーが表示されます。すべてのチェッカーは、説明と構成オプションが記載されているドキュメントへのハイパーリンク。
python-flake8
もpython-pylint
もないので、変数flycheck-python-pycompile-executable
を"python3"
に設定するだけで、すべて明るく明るくなります。
私の場合(pipenvなし)、チェッカーをpython3
にインストールすることで機能しました。
$ pip3 install flake8 pylint mypy
そして、次のコードを~/.emacs.c/custom.el
に追加して、Flycheckがチェッカーにpython3
を使用するようにします。
(custom-set-variables
'(flycheck-python-flake8-executable "python3")
'(flycheck-python-pycompile-executable "python3")
'(flycheck-python-pylint-executable "python3"))
@ uwe-koloskaが述べたように、 Ctrl-c!vflycheck-verify-setup
を呼び出すことは非常に役立ちます。
Flycheckは単にパスのどこかにあるはずのpylint実行可能ファイルを呼び出すだけです。その実行可能ファイルがpython2のpipによってインストールされた場合、pylintは、python3のpip(pip3と呼ばれることもある)に対してインストールされた場合、python2構文をチェックし、その後、pylintはpython3構文をチェックします。
どのように進めるかはいくつかの事柄に依存します。
仮想環境を使用している場合、開始するのに最適な場所は このページ flycheckの作成者のドットファイルからです
この行も必要です:(add-hook 'flycheck-mode-hook #'flycheck-virtualenv-setup)
仮想環境を使用していない場合は、pylint実行可能ファイルがpython3用にインストールされていることを確認できます
@Julesが述べたように:
Flycheckは単にパスのどこかにあるはずのpylint実行可能ファイルを呼び出すだけです。
したがって、正しいflake8バージョンがemacs内でアクセス可能であることが重要になります。 pipenv
を使用しているため、最初にプロジェクトの環境内にflake8
をインストールしてから、emacsを起動する前に環境がアクティブ化されていることを確認してください。
プロジェクトのルートディレクトリ内から:
pipenv install flake8
pipenv Shell
その後、コマンドラインからemacsを起動すると、flycheckがプロジェクトの正しいバージョンのflake8に接続します。