28

在此代码段中,

def add(x:int, y:int) -> int:
    return x + y

有些函数注解只有在 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

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

4

6 回答 6

19

见:https ://bugs.launchpad.net/pyflakes/+bug/989203

注意:虽然这个错误报告表明了某种程度的解决方案,但在测试最新版本的 pyflakes0.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:
         ^

更新20140514):

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

所以做这样的事情:

/usr/bin/python3 -m pyflakes foo.py

见:http ://codepad.org/9BKxSZaD

于 2014-05-12T04:04:01.910 回答
9

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

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

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

对我来说在 OSX 上,

pip3 install flake8

这对我有用。:)

于 2017-06-04T12:28:20.860 回答
3

适用于 Mac + py2 + py3 + venv:

pip install flake8
flake8 --version
3.5.0 (mccabe: 0.6.1, pycodestyle: 2.3.1, pyflakes: 1.5.0) CPython 2.7.14 on Darwin

pip3 install flake8
python3 -m flake8 --version
3.5.0 (mccabe: 0.6.1, pycodestyle: 2.3.1, pyflakes: 1.6.0) CPython 3.6.1 on Darwin
python3 -m flake8 --exclude migrations --max-line-length=121
于 2018-05-09T05:53:10.263 回答
1

您需要确保您使用的是 python3 的 flake8。在 linux 上,您需要执行以下操作:

sudo pip uninstall flake8
sudo pip3 install flake8
于 2019-08-19T09:44:10.470 回答
0

我有一个类似的问题,并通过 python 安装 flake8 解决了它。

$ python --version
Python 3.8.3

$ python -m pip install flake8
于 2020-06-29T22:23:50.887 回答
0

你们可能都应该使用虚拟环境python3 -m venv venv; source venv/bin/activate

于 2020-02-28T18:19:58.977 回答