web-dev-qa-db-fra.com

Comment utiliser flake8 pour Python 3?

Dans cet extrait de code,

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

il y a des annotations de fonction qui ne sont prises en charge qu'après python 3.0

Lorsque j'exécute flake8 pour ce code 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

J'ai eu une erreur de syntaxe non valide, mais cela devrait être une syntaxe valide. Comment puis-je utiliser flake8 pour vérifier la syntaxe qui n'est prise en charge que dans Python 3.x?

27
Cody

Voir: https://bugs.launchpad.net/pyflakes/+bug/9892

NB: Bien que ce rapport de bogue indique un certain niveau de résolution, tester la dernière version de pyflakes 0.8.1 ce manque de Python 3 annotations existe toujours.

Je suppose que vous devrez déposer une nouvelle demande de fonctionnalité distincte auprès de pyflakes.

Bugs 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:
         ^

[~ # ~] mise à jour [~ # ~] ( 20140514):

Comme il s'avère que la vraie réponse à ce problème est d'exécuter pyflakes ou flake8 sous Python 3.x au lieu de Python 2.x. Cela a du sens :)

Alors faites quelque chose comme ça:

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

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

14
James Mills

J'ai la réponse sur reddit ( ici ):

Il utilise tout ce que flake8 est installé dans le Python dans votre chemin.

vous devez donc installer flake8 par pip3, pas pip.

sur OSX pour moi,

pip3 install flake8

cela fonctionne pour moi. :)

6
ZyusAn

travaillé pour 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
2
Legolas Bloom

Vous devez vous assurer que vous utilisez flake8 de python3. Sur Linux, vous voudrez faire:

Sudo pip uninstall flake8
Sudo pip3 install flake8
1
tom-james-watson

Vous devriez probablement utiliser environnements virtuels (python3 -m venv venv; source venv/bin/activate) ... De cette façon, 'python' et 'pip' utilisent ceux que vous voulez, par défaut ... Je dis juste.

0
Tom Hundt