2

我的 flake8 的 pyflakes 部分没有为我的全局 python 实例(/usr/bin/python而不是 virtualenv)运行。

flake8 --version
2.2.3 (pep8: 1.5.7, mccabe: 0.2.1) CPython 2.7.5 on Darwin

看起来 pyflakes 似乎没有附加到 flake8 上。pip freeze确认pyflakes==0.8.1已安装。我安装在我的全局站点包($ sudo pip install flake8)上。

但是,当在 virtualenv 中运行时,pyflakes 在列表中并且 flake8 按预期工作。

4

1 回答 1

2

我对 conda 的 flake8 也有类似的问题。以下是一些调试说明:

flake8 在其setup.py文件中注册 pyflakes 检查器:

setup(
...
    entry_points={
        'distutils.commands': ['flake8 = flake8.main:Flake8Command'],
        'console_scripts': ['flake8 = flake8.main:main'],
        'flake8.extension': [
            'F = flake8._pyflakes:FlakesChecker',
        ],
    },
...

检查文件时,flake8 加载“flake8.extension”的注册入口点并注册找到的检查器:

...
for entry in iter_entry_points('flake8.extension'):
    checker = entry.load()
    pep8.register_check(checker, codes=[entry.name])
...

conda 的 flake8 似乎在编写这些入口点时遇到问题。

from pkg_resources import iter_entry_points
list(iter_entry_points('flake8.extension'))

为我返回一个空列表,这就是为什么 pyflakes 不会被注册并因此不起作用,即使它已安装并且可导入。

更新 setuptools 并安装 viapip install flake8为我解决了这个问题。

于 2014-11-02T09:09:18.970 回答