L'importation de l'ordre de codage standard
PEP8 suggère que:
Les importations doivent être groupées dans l'ordre suivant:
- de la bibliothèque standard importations
- tiers des importations
- application locale/bibliothèque des importations spécifiques
Vous devriez mettre une ligne vide entre chaque groupe d'importations.
Est-il un moyen de vérifier si la norme est bafoués dans le package à l'aide de l'analyse statique de code outils, comme pylint
, pyflakes
, pychecker
, pep8
?
Exemple de la violation:
from my_package import my_module
from django.db import models
import os
De façon correcte à l'importation:
import os
from django.db import models
from my_package import my_module
- Le
pep8
outil ne dispose pas actuellement de vérifier cela - il vérifie seulement pour de multiples importations sur une seule ligne (E401) - bon à savoir, merci. Espérons qu'il ya quelque chose là-bas.
- PyCharm pourrait le faire, mais je ne suis pas sûr à 100%. Il en coûte des sommes bien que.
- tourné sur toutes python inspections - il ne trouve pas le problème dans l'ordre d'importation. Merci.
- Pycharm a une communauté, en version.
- Si vous n'avez pas finir par trouver quelque chose, vous pouvez écrire votre propre pylint plugin pour vérifier cela pour vous. Jetez un oeil à pylint-plugin-utils et un exemple de plugin ici. (Ce qui pourrait être mieux adapté qu'un commentaire, mais je n'ai pas la réputation de faire des commentaires.)
- il est très loin d'être un doublon. Ici, j'ai demandé l'application de la PEP recommandations par le biais de l'analyse statique de code. Veuillez enlever le drapeau.
- Désolé. Fait.
- PyCharm Community Edition (gratuit) peut pleinement optimiser et de trier vos importations: jetbrains.com/help/pycharm/creating-and-optimizing-imports.html Vous pouvez même configurer la façon dont le tri se passe dans Paramètres | Éditeur | Style de Code | Python | Importations
Vous devez vous connecter pour publier un commentaire.
La version actuelle de pylint maintenant fait cela, et le signale comme classe d'erreur C0411.
wrong-import-order
.Mise à jour (2016): @sbywater a la plus récente réponse.
Trouvé! (accidentellement, lors de la lecture de "Hacker guide python")
OpenStack Piratage Chèques de Style projet nommé piratage introduit plusieurs unique
flake8
extensions. Il est hacking_import_groups d'entre eux (liées s'engager).Exemple:
exigences
piratage (de la branche master):
fichiers utilisés dans l'exemple
tox.ini
(nous avons besoin de dire flake8 que nous voulons utiliser une coutume vérifier)UPD: avec la dernière version de
hacking
le chemin d'accès à la case à changé, maintenant c'esthacking.checks.imports.hacking_import_groups
.test.py
(cible de la case)my_module.py
(import local utilisé partest.py
)Puis, si je lance
flake8
contretest.py
:Puis, si je groupe les importations dans le bon ordre suivant
PEP8
:Pas d'avertissements trouvé:
Espère que cela va aider quelqu'un dans le futur.
Ont un coup d'oeil à https://pypi.python.org/pypi/isort ou https://github.com/timothycrosley/isort
https://pypi.python.org/pypi/flake8-isort bouchons de cette fonctionnalité dans flake8
isort script_name.py --check-only
- il seulement non triés importations et d'imprimer les résultats - c'est ce dont j'avais besoin. Merci beaucoup pour l'option.isort -rc --check --diff
vérifier tous les fichiers de manière récursive, la seule vérification, l'affichage d'un diffUn
flake8
plugin existe: flake8-import-commande.