Je travaille sur un grand projet en python qui a beaucoup d'importations.
from ... import
déclarations). Enfin, certains ont des alias canoniques (import numpy as np
).Compte tenu de tout cela, le schéma d'importation le plus lisible que j'ai pu trouver est le suivant:
import aaa_sys
import bbb_sys
import aaa_third
from bbb_third import bb
import ccc_third as cc
import ddd_third
import .aaa_local
import .bbb_local
import ..aaa_remote.aaa_remote_module
import ..bbb_remote.bbb_remote_module
En d'autres termes, quel que soit le type d'importation (absolue ou aliasing ou importation sélective), j'importe d'abord par ordre alphabétique le système, puis un tiers, et enfin les bibliothèques de packages.
Existe-t-il une approche acceptée par l'industrie à cet égard? Quelque chose qui ressemble à l'ordre d'importation d'en-tête Google C++.
si vous recherchez une norme plus détaillée que pep8, voir https://github.com/PyCQA/flake8-import-order
de leur README
Les styles suivants sont directement pris en charge,
cryptography
- voir un exemplegoogle
- style décrit dans Google Style Guidelines , voir un exemplesmarkets
- style comme google
uniquement avec les instructions import
avant from X import ...
instructions, voir un exempleappnexus
- style comme google
uniquement avec les instructions import
pour les packages locaux de votre entreprise ou organisation venant après les instructions import
pour les packages tiers, voir un - exempleedited
- voir un exemplepycharm
- style comme smarkets
uniquement avec un tri des noms importés respectant la cassepep8
- style qui applique uniquement les groupes sans appliquer l'ordre au sein des groupesVous pouvez également ajouter votre propre style
Je ne suis pas un expert en python, donc il me manque peut-être quelque chose, mais la seule norme d'ordre d'importation que je connaisse est PEP8 :
Les importations doivent être regroupées dans l'ordre suivant:
- importations de bibliothèques standard
- importations de tiers liées
- importations spécifiques à une application/bibliothèque locale
Vous devez mettre une ligne vierge entre chaque groupe d'importations.
Certains outils tels que pylint vous avertiront si votre code rompt cette suggestion.
Il semble que c'est à peu près ce que vous faites déjà. La norme ne le dit pas, mais le tri alphabétique au sein de chaque groupe est également logique pour moi.