0

为了让 flycheck 为 Python 工作,我已经达到了令人满意.emacs的结果,结果证明只需要:

(require 'flycheck)
(add-hook 'after-init-hook #'global-flycheck-mode)

现在,在期待Python 3.6 会是什么样子之后,即使是两行

class Foo():
    pass

收到一大堆警告:

Too few public methods (0/2) [too-few-public-methods]
Class has no __init__ method [no-init]
Old-style class defined. [old-style-class]
Missing class docstring [missing-docstring]
Missing module docstring [missing-docstring]

尽管如此,我现在已经坚定地回到 2.7 ( sudo port select --set python python27)。

Emacs 让我们习惯于与上下文无关。系统上的内容通常无关紧要。如果一个人从一个未改变的.emacs. 我的系统中可能发生的其他哪些变化会触发飞行检查警告的突然增加?

4

2 回答 2

1

好的,我找到了答案。

flycheck选择(默默地?) flake8,如果没有找到,它会退回到 pylint(然后是 pycompile)。

问题是符号链接flake8消失了。这是为什么/如何。

选择python36并返回后

~/ > sudo port select --set python python36
~/ > sudo port select --set python python27

并在选择 pip36 并返回后

~/ > sudo port select --set pip pip36
~/ > sudo port select --set pip pip27

符号链接/opt/local/bin/flake8消失。只剩下 flake8-2.7。

> ls -l /opt/local/bin/flake8*
lrwxr-xr-x  1 root  admin  70 20 Mar 16:35 /opt/local/bin/flake8-2.7 -> /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/flake8

据推测,当您更新到 Python 3.6 但没有 flake8-36 时,会发生什么情况flake8(已更新,符号链接已删除)。port select当您降级到 Python 2.7 时,无法恢复符号链接(其中之一,也许是前者,值得警告——也许是 MacPorts 中的一个小错误)。

~/ > sudo port select --list flake8
Available versions for flake8:
    flake8-27
    none (active)

flake8解决方案是在降级时明确指出flake8-27

~/ > sudo port select --set flake8 flake8-27
Selecting 'flake8-27' for 'flake8' succeeded. 'flake8-27' is now active.

然后链接回来了,flycheck 选择flake8了 over pylint

> ls -l /opt/local/bin/flake8*
lrwxr-xr-x  1 root  admin  25  7 Sep 09:01 /opt/local/bin/flake8 -> /opt/local/bin/flake8-2.7
lrwxr-xr-x  1 root  admin  70 20 Mar 16:35 /opt/local/bin/flake8-2.7 -> /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/flake8
于 2017-09-07T13:16:13.720 回答
0

设置次要模式挂钩或仅添加到编程模式可能会更好

(add-hook 'prog-mode-hook 'flycheck-mode)

通过将其设置为global将在每个缓冲区中启用它,即使在不需要的 org 模式等文本模式下也是如此。也可能会减慢速度。:)

于 2017-09-18T08:12:22.977 回答