Как использовать 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?
Ответы
Ответ 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