From 1add20bc5f310f124c4667c600f41f9274fa1de6 Mon Sep 17 00:00:00 2001
From: Arnauld <biganzoli@laplace.univ-tlse.fr>
Date: Sun, 19 Jan 2025 01:48:19 +0100
Subject: [PATCH] =?UTF-8?q?Ajout=20du=20fichier=20sur=20la=20m=C3=A9thodol?=
 =?UTF-8?q?ogie=20de=20dev=20en=20Python?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.md                                    |  38 ++++++++--
 docs/methode-de-developpement-pour-python.md |  73 +++++++++++++++++++
 images/logo-laplace.png                      | Bin 0 -> 9911 bytes
 3 files changed, 104 insertions(+), 7 deletions(-)
 create mode 100644 docs/methode-de-developpement-pour-python.md
 create mode 100644 images/logo-laplace.png

diff --git a/README.md b/README.md
index 77bed9a..6e93bee 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,26 @@
-# Référentiel de projets Python - Service commun d'électronique
+<h2>Référentiel de projets Python - Service commun d'électronique<h/2>
 
-Bienvenue dans ce référentiel ! Vous trouverez ici une collection de mes projets Python développés au sein du service commun d'électronique.
+**Bienvenue dans ce référentiel !** Vous trouverez ici une collection de liens vers mes projets Python développés au sein du service commun d'électronique.
+
+- [Objectifs](#objectifs)
+- [Structure](#structure)
+- [Contribution](#contribution)
+- [📄 Licence](#-licence)
+
+---
+
+<br />
 
 ## Objectifs
 
 * Exploration de projets Python par des retours d'expérience à travers une veille technologique
+* Explication de ma méthodologie de travailler avec Python
 
 ## Structure
 
-* Premier partage autour de la lecture des données de multimètres numériques de chez Keysight
+* [Premier partage autour de la lecture des données de multimètres numériques de chez Keysight][link_multimeters_py]
+* [Partage d'un scripts pour la recherche de valeurs de résistances pour un pont diviseur de tension][link_resistor_calculator_py]
+* Prochainement, partage de scripts pour la communication avec des cartes d'acquisition de données
 
 ## Contribution
 
@@ -18,12 +30,24 @@ N'hésitez pas à contribuer à ce référentiel en :
 * M'aider à améliorer la documentation existante
 * Faire remonter et proposer des corrections de bugs
 
-## Licence
+**Contact:**
+
+Vous pouvez me contacter par mail à l'adresse [arnauld.biganzoli[at]laplace.univ-tlse.fr](mailto:arnauld.biganzoli@laplace.univ-tlse.fr?subject=Contact%20projets%20Python%20du%20GitLab%20Koda%20du%20SCE)
 
-Copyright (c) 2025 LAPLACE, UMR INP-UPS-CNRS N°5213
+## 📄 Licence
 
 Ce projet est sous licence [CeCILL-C](https://cecill.info/licences/Licence_CeCILL-C_V1-fr.html)
 
-**Contact:**
+image::https://img.shields.io/badge/License-CeCILL--C-blue.svg[link="https://cecill.info/licences/Licence_CeCILL-C_V1-fr.html", alt="License CeCILL-C", title="License CeCILL-C"]
 
-Vous pouvez me contacter par mail à l'adresse [arnauld.biganzoli[at]laplace.univ-tlse.fr](mailto:arnauld.biganzoli@laplace.univ-tlse.fr?subject=Contact%20projets%20Python%20du%20GitLab%20Koda%20du%20SCE)
+![Laplace](images/logo-laplace.png "Logo LAPLACE")
+
+Copyright (c) 2025 LAPLACE, UMR INP-UPS-CNRS N°5213
+
+---
+
+<!-- Retrouvez ce projet sur le GitLab du service commun d'électronique : -->
+
+[link_multimeters_py]: https://src.koda.cnrs.fr/laplace-service-commun-electronique/membres/arnauld-biganzoli/python/visa-communication-with-digital-multimeters
+
+[link_resistor_calculator_py]: https://src.koda.cnrs.fr/laplace-service-commun-electronique/membres/arnauld-biganzoli/python/calculateur-de-resistances-pour-pont-diviseur-de-tension
diff --git a/docs/methode-de-developpement-pour-python.md b/docs/methode-de-developpement-pour-python.md
new file mode 100644
index 0000000..0cf30a4
--- /dev/null
+++ b/docs/methode-de-developpement-pour-python.md
@@ -0,0 +1,73 @@
+<h2>Méthodologie de developpement en langage Python</h2>
+
+**Sommaire :**
+
+- [Installation de l'environnement Python](#installation-de-lenvironnement-python)
+- [Installation d'un environnement virtuel pour chaque projet](#installation-dun-environnement-virtuel-pour-chaque-projet)
+- [Activer votre environnement virtuel](#activer-votre-environnement-virtuel)
+- [Installation des bibliothèques Python](#installation-des-bibliothèques-python)
+- [Exécuter un programme Python](#exécuter-un-programme-python)
+
+---
+
+<br />
+
+## Installation de l'environnement Python
+
+Pour exécuter les scripts Python, vous devez disposer d'un environnement Python fonctionnel.
+
+La version de Python recommandée pour ces scripts est la version `3.12.5`
+
+Plusieurs options s'offrent à vous pour installer Python sur votre ordinateur :
+
+* Télécharger et installer Python depuis le site officiel [Python.org](https://www.python.org/downloads/).
+* Passer par l'environnment [Anaconda](https://www.anaconda.com/products/distribution) qui est une distribution de Python qui inclut de nombreuses bibliothèques utiles dans le monde scientifique.
+* Utiliser un gestionnaire des versions de Python, qui vous permettra de faire plusieurs installations de Python en parallèle. Voir [pyenv-win](https://github.com/pyenv-win/pyenv-win) qui est une version de pyenv pour Windows que j'utilise ici.
+
+## Installation d'un environnement virtuel pour chaque projet
+
+Pour chaque projet, je vous recommande de créer un environnement virtuel dédié. Cela vous permettra de gérer les dépendances de chaque projet de manière indépendante.
+
+Pour cela, vous pouvez utiliser le module `venv` de Python avec la version de Python que vous avez installée, est qui est compatible avec votre projet et les versions des bibliothèques que vous utiliserez.
+
+Pour créer un environnement virtuel, vous pouvez exécuter la commande suivante dans un terminal.
+
+Cette commande crée un dossier `.env` dans le répertoire courant qui contiendra l'environnement virtuel Python pour l'exécution de votre projet :
+
+```bash
+python -m venv .env
+```
+
+## Activer votre environnement virtuel
+
+Placez vous dans le répertoire de votre projet, puis activez l'environnement virtuel que vous avez créé.
+
+Exécutez la commande suivante dans un terminal pour l'activer :
+
+```bash
+`source .env/bin/activate` (sous Linux/macOS) ou `> .env\Scripts\activate` (sous Windows)
+```
+
+Une autre option est d'utiliser l'extension [Python pour Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-python.python), qui vous permet de sélectionner l'environnement virtuel à utiliser pour chaque projet.
+
+## Installation des bibliothèques Python
+
+Pour installer les bibliothèques nécessaires, vous pouvez utiliser le gestionnaire de paquets `pip`.
+
+Pour cela, soit vous installez les bibliothèques une par une, soit vous utilisez le fichier `requirements.txt` fourni dans le projet.
+
+Exécutez la commande suivante dans un terminal :
+
+```bash
+pip install -r requirements.txt
+```
+
+## Exécuter un programme Python
+
+Vous êtes maintenant prêt à éxécuter un programme python depuis un terminal ou l'environnement de développement de votre choix. Ma recommandation est d'utiliser [Visual Studio Code](https://code.visualstudio.com/).
+
+Exemple d'exécution d'un programme Python depuis un terminal :
+
+```bash
+(.env) > python src\example.py
+```
diff --git a/images/logo-laplace.png b/images/logo-laplace.png
new file mode 100644
index 0000000000000000000000000000000000000000..2da1ff5b44643d54af3337bd9aa79b07a83bb466
GIT binary patch
literal 9911
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
S_-_&oL0Miyu1>}x?Ee9CcU^=4

literal 0
HcmV?d00001

-- 
GitLab