如何在Python 3中使用flake8?

Cod*_*ody 27 python python-3.x flake8

在此代码段中,

def add(x:int, y:int) -> int:
    return x + y
Run Code Online (Sandbox Code Playgroud)

有一些函数注释只在python 3.0之后支持

当我为这个python代码执行flake8时:

$ flake8 7.3.py -vv
checking 7.3.py
def add(x: int, y: int) -> int:
return x + y
7.3.py:1:11: E901 SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我得到了无效的语法错误,但它应该是有效的语法.如何使用flake8来检查Python 3.x中仅支持的语法?

Jam*_*lls 16

请参阅:https://bugs.launchpad.net/pyflakes/+bug/989203

注意:虽然这个错误报告表明某种程度的解决方案,但测试最新版本的pyflakes,0.8.1这种缺乏的Python 3注释仍然存在.

我想你必须向pyflakes提交一个单独的新功能请求.

pyflakes臭虫

$ cat - > foo.py
def add(x:int, y:int) -> int:
    return x + y
^D
$ pyflakes --version
0.8.1

$ pyflakes foo.py
foo.py:1:10: invalid syntax
def add(x:int, y:int) -> int:
         ^
Run Code Online (Sandbox Code Playgroud)

更新(20140514):

事实证明实际的答案,这个问题是运行pyflakesflake8 下的Python 3.X,而不是Python的2.x的 这说得通 :)

所以做这样的事情:

/usr/bin/python3 -m pyflakes foo.py
Run Code Online (Sandbox Code Playgroud)

请参阅:http://codepad.org/9BKxSZaD


Zyu*_*sAn 7

我在reddit(这里)得到了答案:

它使用路径中Python中安装的任何flake8.

所以你需要通过pip3安装flake8,而不是pip.

在我的OSX上,

pip3 install flake8
Run Code Online (Sandbox Code Playgroud)

这对我有用.:)