我的全局python实例(/usr/bin/python,不是virtualenv)未运行flake8的pyflakes部分。

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可以正常工作。

最佳答案

我对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并通过pip install flake8安装为我解决了该问题。

关于python - Flake8在全局python实例中不使用pyflakes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26153267/

10-12 22:42