Flake8在全局python实例中没有使用pyflakes

时间:2014-10-02 01:39:25

标签: python pyflakes flake8

我的pyke8的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按预期工作。

1 个答案:

答案 0 :(得分:2)

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

flake8在其setup.py文件中注册pyflakes checker:

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并通过pip install flake8进行安装,解决了我的问题。