This is the practical cases for Python training I provide. Intended for french trainee, the rest of the explanations are in french.
Ce référentiel complète la formation que je propose et est donc destiné à mes stagiaires.
Ces sources représentent un projet de référence pour une formation Python. Il couvre aussi bien les fondamentaux que des notions avancées.
Ces sources sont en cours de réorganisation, le contenu de ce README n'est pas à jour.
Ces sources ne sont pas un projet mais plusieurs. Les projets sont dans le
répertoire projects. L'organisation (à terme) est la suivante :
assets: contient les ressources pour les exercices.pyflix: est le projet décrit ci-dessoustests: est le package contenant des tests.
Python doit être installé. La formation est prévue pour être compatible Python 3.6+ mais des exemples illustrent des fonctionnalités plus récentes.
Récupérez ce projet en local. En fonction de vos outils et de vos connaissances de Git, clonez le répertoire ou récupérez les sources sous forme d'archive zip. Vous pouvez placer le projet où vous le souhaitez dans votre arborescence.
pip est le gestionnaire de dépendances qui va nous permettre d'installer tout ce qui est nécessaire à ce projet. Vous pouvez évidemment travailler dans un virtualenv dédié à la formation. Si vous utilisez un IDE tel que PyCharm, vous pouvez l'utiliser pour créer ce virtualenv. Placez vous alors à la racine du projet et saisissez
python -m pip install -r requirements.txt
Votre environnement contient alors toutes les dépendances nécessaires. Il ne reste plus qu'à générer la documentation (optionnel).
Le répertoire /docs/ contient un exemple de documentation de projet. Pour la générer, Placez-vous dans ce répertoire et exécutez
make html
La documentation est alors dispoible dans le sous répertoire _build/html.
Ce projet illustre un résultat final qui peut être vu en formation. Le sujet est d'aller vers la mise en place d'une plate-forme media. La finalité pourra aussi bien être un mediacenter personnel qu'un service commercial.
Le point d'entrée de cette application est le module mediamanager.main.
Celui-ci doit être lancé d'un shell avec une commande. Les commandes sont :
- load : lance le programme de chargement des données
- web : lance la webapp locale
- app : lance l'application tkinter
Note : les fichiers launcher en .bat et sh lancent la webapp avec tous
les paramètres par défaut.
Les paramètres de l'application sont dans le module mediamanager.conf. Ce
module conient la configuration par défaut. Il doit être importé dans le
programme principal et modifié en fonction des paramètres de lancement de
l'application. Ce module doit ensuite être importé dans les modules où ces
paramètres seront nécessaires et son conenu sera donc disponible.
Cette application utilise une base de données SQLite.
Le module mediamanager.media_db contient tout le nécessaire à l'utilisation
d'une base de données. Les scripts SQL sont déclarés dans ce module. La logique
de création, évolution et maintenance est expliquée dans le module.
Cette application utilise les arguments de la ligne de commande. L'utilisation
de ces argument est géré dans le module mediamanager.main avec argparse.
Ces sources contiennet des propositions de corrections des exercices pratiques proposés en formation. Leur objectif principal est d'illustrer ce qui a été présenté en formation. Les répertoires d'intérêt sont :
/training/projectspropose plusieurs projets regroupés en packages./banksur le thème de la gestion de comptes bancaires contient principalement du code tel que présent dans le support./mediamanagercontient un projet complet de gestion de médiathèque./museumscontient un projet de maniulation de données sur les musées/sncfcontient un projet de manipulation de données issues de la SNCF/stackspropose un exemple d'implémentation de piles/trainigsur le thème de la gestion de fomrations reprends le code du support.
/training/casesest un package contennat des modules illustrant des outils présentés durant la formation
Le projet MediaManager est le plus aboutit, il s'agti du fil directeur le plus régulièrement utilisé durant mes formations. Vous pouvez tester les exemples en lançant les différents modules. Les commandes les plus pratiques seront :
python -m training.projects.mediamanager.mediamanager load -f assets/showslist.csv
qui permet de créer la base de données et de l'alimenter avec les informations du fichier csv.
python -m training.projects.mediamanager.mediamanager cli
lance l'interface en ligne de commande.
python -m training.projects.mediamanager.mediamanager app
lance l'interface tkinter. Cette interface n'est pas connectée à la base de données, elle ne gère pas non plus la notion de séries.
python -m training.projects.mediamanager.mediamanager web
lance le serveur web pour l'application Flask qui est connecté à la base de données.
Le répertoire workbooks contient des cahiers d'exercices. Ceux-ci sont des documents type Jupyter Notebooks générés à l'aide de Jupyter. Ce dernier est inclus dans les dépendances.
Dans un terminal localisé dans le répertoire racine du projet, exécutez la commande
python -m jupyter notebook
Vous pouvez maintenant travailler avec les workbooks. Ceux-ci sont proposés comme outil pour vous aider à vous familiariser avec le langage.
Le répertoire /docs contient normalement une documentation du projet. Elle
contient actuellement un exemple de contenu pouvant produire un support pour
cette formation. Notez que comme toute bonne documentation… elle n'est pas
maintenue.
Le répertoire /draft est un répertoire contenant des squelettes de modules à
compléter.
Le fichier requirements liste les dépendances nécessaires au projet dans son ensemble. Il s'agit de :
- bottle : microframework web utilisé lorsque le thème du web est abordé.
- coverage : framework permettant de générer les métriques de couverture du code.
- Faker : lib permettant de générer des données
- Flask : microframework web utilisé lorsque le thème du web est abordé.
- ipython : remplaçant du shell interractif.
- pylint : outil d'analyse de qualité du code.
- pytest : lib de tests unitaires, à utiliser de préférence par rapport à unittest.
- Sphinx : outil de génération de documentation.
Le répertoire assets contient des fichiers issus de plusieurs sources publiques, les droits appartenant à leur propriétaires respectifs :
Les documents contenus dans ces répertoires permettent de travailler sur des volumes important de données.
Durant la formation, des ressources complémentaires peuvent être disponibles sur le partage suivant.