【问题标题】:Flake8 not using pyflakes in global python instanceFlake8 不在全局 python 实例中使用 pyflakes
【发布时间】:2014-10-02 01:39:24
【问题描述】:

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

【问题讨论】:

    标签: python pyflakes flake8


    【解决方案1】:

    我对 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 安装解决了我的问题。

    【讨论】:

    • 我也遇到了同样的问题,但我不太清楚你所说的“更新 setuptools”是什么意思,你能再具体一点吗?
    • @RobertoAguilar,这取决于。此错误已在较新版本的 anaconda 中修复。如果您使用的是anaconda,则只需输入conda update flake8。如果你使用的是香草 python,你会选择pip install --upgrade setuptools,然后是pip install --upgrade flake8
    • 我试过pip命令,现在flake8调用pyflakes成功了,非常感谢
    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多