Comment intégrer pep8.py dans Eclipse?

90

Un peu de contexte:

  • PEP 8 est le guide de style pour le code Python . Il contient les conventions que tous les programmeurs python doivent suivre.
  • pep8.py est un script (très utile) qui vérifie le formatage du code d'un script python donné, selon PEP 8.
  • Eclipse est un excellent IDE. Avec l' extension Pydev , il peut être utilisé pour développer Python

J'exécute pep8.py manuellement lorsque je rédige des scripts, mais avec des projets plus importants, je préfère utiliser Eclipse. Il serait vraiment utile d'intégrer pep8.py dans Eclipse / Pydev, afin qu'il puisse être exécuté automatiquement dans tous les fichiers du projet, et pointer sur les lignes contenant les avertissements. Il y a peut-être une manière évidente de le faire, mais je ne l'ai pas encore trouvée.

La question est: comment intégrer pep8.py dans Eclipse?

David Arcos
la source
3
Il existe maintenant une intégration pep8 par défaut. Voir: stackoverflow.com/questions/399956/…
Fabio Zadrozny
1
Étant donné que la situation a changé depuis que vous avez accepté la réponse de Dmitry Kochkin , puis-je vous suggérer de changer votre réponse acceptée soit en réponse de Fabio Zadrozny , soit en réponse de angelo.bixly ? Cela aidera les futurs visiteurs qui, comme moi, sont venus à cette question de Google, nous permettant de trouver d'abord les informations les plus à jour - sinon, cela peut prendre beaucoup de temps pour que ces réponses soient poussées vers le haut.
Mark Booth

Réponses:

88

Depuis PyDev 2.3.0, pep8est intégré dans PyDev par défaut, même livré avec une version par défaut de celui-ci.

Ouvrir la fenêtre> Préférences

Il doit être activé dans PyDev> Editor> Code Analysis> pep8.py

Les erreurs / avertissements doivent être affichés sous forme de marqueurs (comme d'autres choses dans l'analyse de code classique).

Dans le cas où un fichier n'est pas analysé, voir https://stackoverflow.com/a/31001619/832230 .

Fabio Zadrozny
la source
6
Il affiche de nombreux avertissements par défaut. Cependant, lorsque je l'exécute à partir de la ligne de commande, cela montre encore plus. Comment puis-je le convaincre d'afficher tous les avertissements dans Eclipse tels qu'ils s'affichent lorsqu'il est exécuté à partir de la ligne de commande? Les options sont les mêmes. De plus, la redirection de la sortie pep8 vers la console ne fait rien.
Krystian Cybulski
2
PyDev utilise actuellement une version plus ancienne car il utilise sa version interne de Jython (qui est actuellement à 2.2.1). Il est prévu de le faire fonctionner en externe pour obtenir les résultats ou de mettre à jour le Jython interne pour pouvoir prendre en charge les nouvelles versions de pep8.py.
Fabio Zadrozny
Apparemment, cela ne fonctionne pas avec PyDev 4.2.0, aucun marqueur n'est jamais affiché, que ce soit en mode Avertissement ou Erreur.
Luís de Sousa
1
Je viens de le tester ici et cela fonctionne pour moi ... notez que vos sources doivent être dans un dossier source (c'est-à-dire: dans le PYTHONPATH) pour que cela fonctionne (si ce n'est toujours pas le cas, veuillez signaler le problème sur le tracker pydev ).
Fabio Zadrozny
Il a commencé à fonctionner une fois que je l'ai mis en mode Erreur. Il y a aussi un délai entre le moment où vous l'activez et le moment où il commence à marquer le code.
Luís de Sousa
26

Je ne sais pas comment l'intégrer pour l'ensemble du projet, mais je l'ai utilisé comme outil externe pour analyser un fichier individuel.

Notez que le pycodestylepackage est le remplacement officiel et la version la plus récente du pep8package. Pour l'installer, exécutez:

$ sudo pip install --upgrade pycodestyle

Ensuite, dans Eclipse:

  1. Sélectionnez Run-External Tools-External Tools Configurations ...
  2. Sélectionnez le nœud racine du programme .
  3. Appuyez sur le bouton Nouvelle configuration de lancement .
  4. Entrez le nom pour votre configuration de lancement. J'utilise pycodestyle.
  5. Remplissez les champs suivants:

    Emplacement -${system_path:pycodestyle}

    Répertoire de travail -${container_loc}

    Arguments - "${resource_name}"(Cela utilise le fichier actuellement actif.)

Allez dans l' onglet Commun et confirmez que la case Allocate Console est cochée.

Un avantage de cette approche est que vous pouvez utiliser une version très à jour du package, et ne sont pas limités à l'ancienne version incluse avec PyDev. Et si vous êtes curieux de configurer pylintde la même manière, lisez cette réponse .

Dmitry Kochkin
la source
1
Si vous obtenez une erreur Variable références sélection vide: $ {container_loc} n'oubliez pas d'ajouter votre dossier source à PYTHONPATH (il peut ne pas être là si vous importez un projet existant dans l'espace de travail). Cliquez avec le bouton droit sur le nom du projet> Propriétés> PyDev - PYTHONPATH> onglet Dossiers sources et cliquez sur Ajouter un dossier source . Devrait fonctionner comme un charme.
berni
2
Il existe maintenant une intégration pep8 par défaut. Voir: stackoverflow.com/a/8532188/110451
Fabio Zadrozny
1
Ce n'est pas aussi utile pour pep8 CHECKING, car cela est principalement disponible dans Eclispe - mais je l'ai trouvé super pour autopep8! Merci
tom stratton
12
  1. Ouvrez votre Eclipse
  2. Accédez à l'aide et sélectionnez Installer un nouveau logiciel
  3. Cliquez sur le bouton Ajouter et une boîte de dialogue "Ajouter un référentiel" apparaîtra
  4. Vous pouvez utiliser le nom de votre choix. (J'ai utilisé PyDev)
  5. Pour l'emplacement, saisissez «http://pydev.org/updates»
  6. Cliquez sur OK.
  7. Vous êtes maintenant en cours d'installation. Attendez juste qu'il se termine.
  8. Après l'installation, fermez Eclipse et ouvrez-le à nouveau.
  9. Maintenant que PyDev est installé dans votre Eclipse, allez dans Fenêtre-> Préférences
  10. Choisissez PyDev-> Editor-> Code Analysis
  11. Accédez à l'onglet pep8.py
  12. Choisissez le bouton radio d'avertissement et cliquez sur OK.

C'est tout. Votre Eclipse IDE est désormais intégré à PEP8. Pour exécuter automatiquement pep8.py, faites un clic droit sur votre éditeur de projet. Choisissez PyDev et cliquez sur "analyse de code". Dans votre onglet Problèmes de votre espace de travail, vous verrez des avertissements indiquant la ligne que vous avez violée dans le PEP8 (si vous avez violé).

Incroyable Angelo
la source
Quelque chose de très étrange, c'est que peu importe à quel point j'ai essayé de configurer pep8, les avertissements et les marqueurs d'informations dans l'éditeur ne sont pas apparus. C'est jusqu'à ce que j'ai ajouté la vue "Problèmes", puis cela a soudainement fonctionné comme un charme ...
Agey
10

ANALYSE DU CODE:

Dans Eclipse ( PyDev ), si vous souhaitez coder l'analyse utilisant le style pep8,

Allez dans: Windows -> Préférences -> PyDev -> Editeur -> Analyse de code -> onglet pep8.py et sélectionnez Avertissement cliquez sur Appliquer et sur le bouton OK.

Dans votre code python, si vous validez le style de codage pep8, cela vous donnera un avertissement

FORMATAGE AUTOMATIQUE DU CODE:

Dans Eclipse ( PyDev ), si vous souhaitez formater automatiquement code python en utilisant le style pep8,

Allez dans: Windows -> Préférences -> PyDev -> Éditeur -> Style de code -> Formateur de code -> cliquez sur la case à cocher ( Utiliser autopep8.py pour le formatage de la console? ) Cliquez sur Appliquer et sur le bouton OK.

Si vous souhaitez augmenter la longueur de la ligne (la valeur par défaut de pep8 est 79) ci-dessous Utilisez autopep8.py, vous pouvez définir le type de paramètre --max-line-length=150 si vous définissez la longueur maximale sur 150

Si vous appuyez sur le raccourci de formatage automatique ( Ctrl + Maj + f ), il formatera automatiquement votre code python comme le style pep8

Sagar Pise
la source
6

Cela ne semble pas encore totalement intégré dans Pydev.

Comme suggéré dans cet article ,

[cela] nécessiterait de changer le code dans pydev - une option flexible consisterait à ajouter des préférences pour permettre à l'utilisateur de choisir les modèles auxquels il souhaite faire correspondre pour créer des hyperliens (et dire quel groupe dans la correspondance est la ligne et lequel est le fichier)...

Ou, vous pouvez l'essayer en jouant avec: org.python.pydev.debug.ui.PythonConsoleLineTracker (devrait être assez facile à comprendre).

Une demande existe justement pour ça, mais elle semble encore ouverte 1 an après sa création ...

VonC
la source