我对 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
为我解决了这个问题。