Подтвердить что ты не робот

Как использовать flake8 для Python 3?

В этом фрагменте кода

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

есть аннотации функций, которые поддерживаются только после python 3.0

Когда я выполняю flake8 для этого кода python:

$ 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?

4b9b3361

Ответ 1

Смотрите: https://bugs.launchpad.net/pyflakes/+bug/989203

NB: Пока этот отчет об ошибке указывает на некоторый уровень разрешения, проверяя последнюю версию pyflakes 0.8.1, этот недостаток Python 3 Annotations все еще существует.

Я думаю, вам придется подать отдельный новый запрос функции на pyflakes.

pyflakes Bugs

$ 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):

Как оказалось, фактический ответ на эту проблему - запустить pyflakes или flake8 под Python 3.x вместо Python 2.x. Это имеет смысл:)

Итак, сделайте что-нибудь вроде этого:

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

Смотрите: http://codepad.org/9BKxSZaD

Ответ 2

У меня есть ответ на Reddit (здесь):

Он использует все, что flake8 установлено в Python на вашем пути.

поэтому вам нужно установить flake8 с помощью pip3, а не pip.

на OSX для меня,

pip3 install flake8

это работает для меня. :)

Ответ 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

Ответ 4

Вы должны убедиться, что вы используете python3 flake8. В Linux вы захотите сделать:

sudo pip uninstall flake8
sudo pip3 install flake8