Nous avons besoin de voir comment exploiter au maximum les fonctionnalites de Python pour creer un code propre et efficace. En termes pratiques, “structurer” signifie produire du code propre dont la logique et nos dependances paraissent claires ainsi que la facon dont nos fichiers et dossiers paraissent organises dans le systeme de fichiers.
Quelle fonctions doivent aller dans quels modules? Comment circule la donnee dans le projet? Quelles fonctionnalites et fonctions peuvent etre groupees ensemble et isolees? En repondant a des questions comme i§a, vous pouvez commencer a planifier, au sens large, ce a quoi votre bien fini ressemblera.
Dans votre section, nous allons jeter un ?il De surcroit pres i propos des systemes de module et d’import de Python tel ils paraissent des elements centraux pour faire respecter une structure dans votre projet. Nous discuterons ensuite des eventuelles perspectives sur comment construire du code qui peut etre etendu et teste de maniere optimal.
Structure du depot
C’est important
Juste comme le style de codage, le design d’API, et l’automatisation seront essentiels a un cycle de developpement sain, l’architecture d’un depot reste une part cruciale de l’architecture de ce projet.
Quand un utilisateur potentiel ou votre contributeur arrive sur la page d’un depot, ils voient la plupart trucs:
Notre nom du projet
La description des travaux
Un tas de fichiers
C’est seulement di?s qu’ils font defiler la page que les utilisateurs verront le README de ce projet.
Si votre depot reste 1 amas massif de fichiers ou une pagaille imbriquee de repertoires, ils risquent de regarder ailleurs avant meme de lire votre belle documentation.
Habillez vous concernant le job que vous voulez, jamais concernant le job que vous avez.
Evidemment, les premieres impressions ne sont jamais tout. Vous et vos collegues allez passer un nombre d’heures incalculable a bosser dans ce depot, enfin devenir intimement familier avec l’integralite des coins et recoins. Le organisation est importante.
Depot exemple
tl;dr (acronyme de “Too Long, I Didn’t Read it”): C’est votre que Kenneth Reitz recommande.
Entrons dans certains details.
Notre module actuel
./sample/ ou ./sample.py
Le code qui nous interesse
Votre paquet de module reste le point central du depot. Il ne devrait jamais etre mis a l’ecart:
Si la module consiste en un seul fichier, vous pourrez le placer directement a Notre racine de votre repertoire:
Votre bibliotheque n’appartient jamais a un sous-repertoire ambigu comme src ou python.
Licence
Se couvrir juridiquement.
Ceci reste sans doute la partie majoritaire de votre depot, en dehors du code source lui-meme. Mes revendications de copyright et le texte d’la licence complet devraient etre dans ce fichier.
Si vous n’etes pas sur d’la licence que vous souhaitez choisir pour ce projet, consultez choosealicense.com.
Bien sur, vous etes aussi libre de publier la code sans une licence, mais cela risque potentiellement d’empecher de nombreuses personnes d’utiliser votre code.
Setup.py
Gestion une distribution et de l’elaboration de paquets
Si ce paquet de module reste a Notre racine de votre depot, ceci pourrait evidemment etre aussi a la racine.
Fichier requirements
Dependances de developpement.
Un fichier requirements de pip pourrait etre place a la racine du depot. Il doit specifier les dependances requises Afin de contribuer au projet: des tests, les builds et Notre generation une documentation.
Si ce projet n’a aucune dependances de developpement ou vous preferez la configuration de l’environnement de developpement via setup.py , votre fichier peut s’averer non important.
Documentation
Documentation de reference des paquets.
Ils font tres peu de raison pour cela qu’il y a ailleurs.
Suite de tests
./test_sample.py ou ./tests
Integration de paquets et tests unitaires
En debutant, une bri?ve suite de tests existera souvent dans un seul fichier:
Un coup que Notre suite de tests grossit, vous pourrez deplacer les tests dans comment commencer une conversation sur russiancupid un repertoire, comme ceci:
Evidemment, ces modules de test doivent importer la module empaquete pour le tester. Vous pouvez le faire de diverses facons:
Attendre que le paquet soit assis dans site-packages.
Choisir 1 modification de chemin simple (mais explicite) pour resoudre le paquet correctement.
Je recommande fortement votre dernier. Demander a un developpeur de lancer setup.py develop pour tester une base de code qui change activement lui demande aussi d’avoir une configuration d’environnement isole pour chaque instance d’une base de code.
Pour donner un contexte d’importation aux tests individuels, creez un fichier tests/config.py.
Ensuite, dans les modules de test individuels, importez le module tel ceci:
Ca fonctionnera i chaque fois comme prevu qu’importe la technique d’installation.