emacs 的正确的 Flymake 配置是什么? (使用Python.el)

问题描述 投票:0回答:2

我使用 emacs 作为 python IDE。我安装了 Flymake,但是,每当我使用 .py 文件时,它都会显示以下错误

错误(flymake):Flymake:无法使用参数(string-operations_flymake.py)启动语法检查进程“pycheckers”:搜索程序:没有这样的文件或目录,pycheckers。 Flymake 将关闭

我的flymake .emacs配置如下:

;; flymake
(add-to-list 'load-path "~/.emacs.d/vendor")
(add-hook 'find-file-hook 'flymake-find-file-hook)
(when (load "flymake" t)
  (defun flymake-pyflakes-init ()
    (let* ((temp-file (flymake-init-create-temp-buffer-copy
               'flymake-create-temp-inplace))
       (local-file (file-relative-name
            temp-file
            (file-name-directory buffer-file-name))))
      (list "pycheckers"  (list local-file))))
   (add-to-list 'flymake-allowed-file-name-masks
             '("\\.py\\'" flymake-pyflakes-init)))
(load "~/.emacs.d/vendor/flymake-cursor.el")
(global-set-key [f10] 'flymake-goto-prev-error)
(global-set-key [f11] 'flymake-goto-next-error)

有关如何解决此问题的任何建议

python emacs elisp flymake
2个回答
4
投票

安装flycheck。应该开箱即用。


0
投票

我将解释如何在 GNU Emacs 29.4 中使用 Flymake。

假设我们要在这个使用符合 Python 3.10 语法的 Python 文件(参见下面的代码块)上使用 Flymake。请注意,最后一个

print
语句有一个语法错误:它缺少右括号。

print('foo')
print('bar')
print('baz'

我们需要安装Python 3.10的语法检查器。我将安装

flake8
,flymake支持Python的所有可用语法检查器都在
python-flymake-command
中。

python3.10 -m pip install flake8

执行命令后,您可以使用

pip show
字段中的
Location
获取其安装位置。

pip show flake8
Name: flake8
Version: 7.1.1
Summary: the modular source code checker: pep8 pyflakes and co
Home-page: https://github.com/pycqa/flake8
Author: Tarek Ziade
Author-email: [email protected]
License: MIT
Location: /home/rodrigo/.local/lib/python3.10/site-packages
Requires: mccabe, pycodestyle, pyflakes
Required-by: 

在我的系统中,二进制文件

flake8
应安装在
/home/rodrigo/.local/bin/flake8
中。

我们需要告诉 Emacs 二进制文件

flake8
位于何处,我们有两个选择:(1) 我们可以将
/home/rodrigo/.local/bin/
添加到将启动 Emacs 的 shell 中的
$PATH
,或者 (2) 我们可以添加
/home/rodrigo/.local/bin/ 
到 Emacs 变量
exec-path
。我将使用(1)。

我们可以通过运行如下所示的命令来启动Emacs。注意:我使用了

emacs -Q
,因此我的任何配置都不会被加载,只是为了展示普通 Emacs 的行为方式。注意:我们不需要加载配置文件,因为在 GNU Emacs 29.4 中,flymake 是内置包。

PATH="/home/rodrigo/.local/bin:$PATH" emacs -Q /tmp/a.py

如果我们执行

flymake-mode
,最后一行应该带有下划线。如果将点移动到下划线,则语法错误将显示在迷你缓冲区中(请参见下面的屏幕截图)。

Emacs showing Python buffer with underlined line

如果我们执行

flymake-show-buffer-diagnostics
,缓冲区
*Flyamke diagnostics for `a.py`*
将被显示(见下面的截图)。

Emacs showing buffer

© www.soinside.com 2019 - 2024. All rights reserved.