Installer Python et configurer son environnement sur sa machine personnelle

Duration1h15

Présentation & objectifs

Cette première activité consiste principalement à installer l’interpréteur Python sur votre machine et à créer a minima, un environnement fonctionnel vous permettant de maîtriser l’installation des paquets dont vous avez besoin et bien sûr, de développer vos programmes en Python et de les exécuter depuis la ligne de commande d’un terminal.

L’utilisation du terminal vous aidera à comprendre ce qui se passe en arrière-plan lorsque vous appuyez sur le bouton “exécuter” dans l’éditeur que vous avez probablement utilisé jusqu’à présent.

De plus, vous apprendrez à installer des bibliothèques (paquets) pour Python, qui fourniront des fonctions utiles pour des usages particuliers (math, traitement du signal, affichage graphique, …)

1 — Installation de Python

1.1 — Qu’est-ce que l’interpréteur Python ?

Commençons par installer sur votre machine le logiciel nécessaire pour coder et exécuter des programmes écrits en langage Python.

Python est un langage informatique qui vous permet d’écrire des programmes, c’est-à-dire une liste d’instructions conçues pour être exécutées par l’ordinateur afin d’accomplir la tâche souhaitée.

Cependant, le processeur de l’ordinateur comprend essentiellement des séries de 0 et de 1. Un interpréteur Python fait la traduction entre vos instructions respectant la syntaxe Python et le processeur qui nécessite des séries de 0 et 1. C’est évidemment une simplification grossière car plusieurs étapes peuvent être nécessaires pour alimenter le processeur (via du bytecode par exemple). Cependant, la principale caractéristique d’un interpréteur est qu’il traduit une instruction à la fois pour le processeur de l’ordinateur.

Avec un interpréteur, il n’est pas nécessaire de traduire l’intégralité du code source et de produire le code binaire complet du programme avant de lancer l’exécution. Cela serait le rôle d’un compilateur. Des langages tels que C ou C++ nécessitent un compilateur. D’autres langages, comme Java, se situent entre ces deux solutions, en compilant le code Java en une représentation intermédiaire (bytecode), qui est ensuite interprétée.

Pour travailler avec le langage Python, vous devez installer un tel interpréteur capable de traduire et d’exécuter les lignes de texte que vous écrirez en syntaxe Python.

1.2 — Avez-vous déjà un interpréteur Python sur votre machine ?

Pour vérifier si vous avez déjà un interpréteur Python sur votre machine, ouvrez un terminal et tapez :

python --version
python --version
python3 --version
python3 --version

La sortie devrait ressembler à ceci :

Sortie
Python 3.10.2
Python 3.10.2
Python 3.10.2
Python 3.10.2

Si vous avez cela, alors vous avez une version de Python 3 installée. Il serait judicieux de vérifier si c’est une version récente (au moins 3.12), ou si vous avez une ancienne version. Si vous avez une ancienne version, vous devrez la mettre à jour (voir ci-dessous).

Si, au contraire, vous obtenez un message indiquant que la commande est inconnue, vous devrez installer Python (voir ci-dessous).

Information

En citant À propos des versions de Python, les versions de Python sont numérotées “A.B.C” ou “A.B” où :

  • A est le numéro de version majeure – Il n’est incrémenté que pour des changements vraiment majeurs dans le langage.
  • B est le numéro de version mineure – Il est incrémenté pour des changements moins fondamentaux.
  • C est le numéro de version micro – Il est incrémenté pour chaque correction de bug.

Contrairement à SemVer, chaque soi-disant “version mineure” de Python peut inclure des changements incompatibles. Ces changements rétro-incompatibles sont généralement documentés dans la page “What’s New” pour chaque version (ex., celle pour 3.12.4 et plus précisément dans la page changelog qui liste les fonctions ou syntaxes nouvelles ou améliorées, mais aussi celles dépréciées par rapport aux versions précédentes).

Habituellement, si ce n’est pas indiqué autrement, A.B1 (plus récent) est rétrocompatible avec A.B2 (plus ancien) lorsque B1 > B2.

1.3 — Installer ou mettre à jour l’interpréteur Python

Pour installer ou mettre à jour Python, votre point de référence est le site officiel de Python.

Important

Installez toujours les logiciels depuis les sites officiels !

Il existe plusieurs sites web qui vous permettront de télécharger un logiciel que vous recherchez. Certains vous feront payer pour un logiciel que vous pouvez trouver gratuitement ailleurs (certaines licences le permettent). Mais surtout, il y a un risque élevé de sécurité à installer des logiciels provenant de sources non fiables.

Vous vous demandez peut-être s’il est toujours préférable d’avoir la dernière version d’un logiciel. Voici quelques questions à considérer avant de mettre à jour votre interpréteur :

  • Parfois, le choix ne vous appartient pas : par exemple, votre client peut avoir des contraintes auxquelles vous devez vous conformer (votre programme ne fonctionnera probablement pas seul mais dans un système existant avec un environnement spécifique).

  • C’est aussi une question d’équilibre entre casser un logiciel existant pour prendre en compte de nouvelles fonctionnalités ou corrections de bugs, des problèmes de sécurité, etc. En effet, vous devez être sûr de pouvoir réparer le logiciel cassé.

  • Certains contrôles doivent être effectués : mon programme utilise-t-il des packages ou a-t-il des dépendances (bibliothèques) qui ne sont pas compatibles (bugs) avec la dernière version ? Ai-je vérifié les retours utilisateurs sur une version spécifique ? Les pages de sortie mentionnent-elles des problèmes potentiels ?

Pour l’instant, considérez que toute version supérieure à 3.12 devrait satisfaire vos besoins. Si certains cours vous demandent une mise à jour plus tard dans votre cursus, vous devrez alors mettre à jour votre interpréteur.

Information

Lorsque vous écrivez du code, gardez une trace de la version du logiciel sur laquelle vous vous appuyez. Connaître la version de l’interpréteur que vous utilisez est important pour garantir que tout utilisateur pourra le faire fonctionner. Cela doit apparaître lors de la documentation de votre logiciel, ainsi que les versions des librairies ou packages que votre logiciel requiert.

La procédure pour installer ou mettre à jour Python dépend de votre système :

Visitez la section Python Releases for Windows sur le site officiel de Python pour trouver la version désirée de Python.

Cliquez sur le lien Download Python pour télécharger le fichier d’installation de la version souhaitée (choisissez la dernière). Assurez-vous que l’architecture ciblée de l’installateur correspond à votre architecture (normalement, l’installateur 64 bits devrait convenir). Puis, lancez l’installateur téléchargé. Si vous mettez à jour une installation existante de Python 3.x, l’installateur vous permettra d’installer la nouvelle version en parallèle de l’ancienne.

Pendant le processus d’installation, assurez-vous que l’option “Add Python to PATH” est cochée, afin que la nouvelle version soit disponible dans le PATH de votre système.

Vérifier l’installation

Pour vérifier votre installation/mise à jour, ouvrez un nouveau terminal ou invite de commandes et tapez la commande suivante pour vérifier que Python a bien été mis à jour :

python --version
python --version

Le gestionnaire de paquets apt est un outil essentiel pour gérer les logiciels sur Ubuntu et autres distributions basées sur Debian. Si vous travaillez avec une autre distribution, vous devriez également avoir un gestionnaire de paquets, mais avec un nom différent. Mais, soyons honnêtes, si c’est le cas, vous savez probablement déjà comment installer Python :)

Tout d’abord, ouvrez un terminal, et mettez à jour la liste des paquets en exécutant la commande suivante :

sudo apt update

Installez le paquet Python en exécutant la commande suivante :

sudo apt install python3

Cette commande installera Python à la version par défaut dans le gestionnaire de paquets de votre distribution, qui peut être légèrement en retard par rapport à la version officielle mais est considérée comme stable.

Vérifier l’installation

Pour vérifier votre installation/mise à jour, ouvrez un nouveau terminal et tapez la commande suivante pour vérifier que Python a bien été mis à jour :

python3 --version

Deux méthodes sont possibles pour installer ou mettre à jour Python : utiliser l’installateur officiel Python.org ou utiliser Homebrew. Homebrew est un gestionnaire de paquets populaire pour MacOS qui peut simplifier votre processus de mise à jour de Python. Suivez la procédure de votre choix :

Utilisation de l’installateur Python

Visitez le site Python.org. Placez votre curseur sur le menu “Downloads”, la page peut directement vous proposer d’installer la dernière version.

Alternativement, naviguez vers la section Downloads où vous pouvez cliquer :

  • Sur le lien “Latest Python 3 Release” pour voir les notes de version de la dernière version.
  • Sur le lien “Download macOS 64-bit universal2 installer” pour télécharger l’installateur de la version la plus récente.

Une fois le téléchargement terminé, ouvrez l’installateur et suivez les instructions pour démarrer le processus d’installation. Pendant l’installation, si cela vous est proposé, assurez-vous de sélectionner l’option “Add Python to PATH” pour mettre à jour la variable d’environnement PATH de votre système.

Utilisation de Homebrew

Tout d’abord, assurez-vous que Homebrew est installé sur votre ordinateur. Sinon, vous pouvez l’installer en suivant les instructions sur le site Homebrew.

Ouvrez une fenêtre de terminal et mettez à jour Homebrew en exécutant la commande suivante :

brew update

Maintenant, pour installer la dernière version de Python. Vous pouvez taper la commande suivante pour télécharger et installer la version la plus récente de Python :

brew install python3

Si vous avez déjà installé Python avec Homebrew, vous pouvez utiliser la commande alternative

brew upgrade python3

Vérifier l’installation

Quel que soit votre choix, pour vérifier votre installation/mise à jour, ouvrez un nouveau terminal et tapez la commande suivante pour vérifier que Python a bien été mis à jour :

python3 --version
Important

N’installez pas Python 2.x ! Pendant le cours, vous utiliserez la version 3 du langage Python qui n’est pas rétrocompatible avec Python 2.

La version 2 est proposée uniquement pour la compatibilité avec d’anciens programmes Python, et ne doit plus être utilisée pour aucun nouveau programme.

Information

“Update” ou “upgrade” ? Nous avons utilisé ces deux mots de manière interchangeable, mais il y a une grande différence entre mettre à jour un logiciel ou le faire évoluer.

Une mise à jour de logiciel est typiquement une version contenant des améliorations de la version actuelle (par exemple, correctifs de sécurité pour traiter des vulnérabilités nouvellement découvertes, améliorations de performances, corrections de bugs).

Une évolution (upgrade) est une toute nouvelle version du logiciel qui représente un changement significatif ou une amélioration majeure (par exemple, nouvelles fonctionnalités majeures).

2 — Utiliser l’interpréteur Python pour exécuter du code Python

2.1 — Un premier programme Python

Le but est de vérifier si votre interpréteur Python fonctionne correctement. Votre premier programme sera le traditionnel qui affiche “Hello World !” à l’écran.

En Python, une seule ligne de code suffit pour cela. Nous fournissons également l’équivalent Java pour plus tard dans votre cursus.

# Print a string to the shell
print("Hello World!")
/**
 * To run this code, you need to have Java installed on your computer, then:
 * - Create a file named `Main.java` in a directory of your choice.
 * - Copy this code in the file.
 * - Open a terminal in the directory where the file is located.
 * - Run the command `javac Main.java` to compile the code.
 * - Run the command `java -ea Main` to execute the compiled code.
 * Note: '-ea' is an option to enable assertions in Java.
 */
public class Main {

    /**
     * This is the entry point of your program.
     * It contains the first codes that are going to be executed.
     *
     * @param args Command line arguments received.
     */
    public static void main(String[] args) {
        // Print a string to the shell
        System.out.println("Hello World!");
    }

}

Comme vous avez installé un interpréteur, il y a deux façons d’exécuter ce code :

  • Via une session interactive.
  • En écrivant et exécutant un script.

2.2 — Travailler en session interactive

La première façon de travailler avec Python est via une session interactive. Pour démarrer une session interactive, ouvrez simplement un terminal et tapez la commande suivante, puis appuyez sur la touche “Entrée”.

python
python
python3
python3

L’invite dans le terminal peut changer en >>> indiquant que l’interpréteur Python attend vos instructions. En effet, lorsque vous êtes en session interactive, chaque instruction Python est exécutée immédiatement et toute sortie est affichée directement en dessous.

Tapez donc le code suivant :

print("Hello World!")

Puis, appuyez sur la touche “Entrée”, et vous devriez voir le résultat suivant :

Sortie
Hello World!

Vous pouvez continuer à taper n’importe quel code Python que vous souhaitez.

Par exemple, considérez le code Python suivant qui inverse simplement une chaîne de caractères.

# The string to manipulate
s = "IMT Atlantique"
print(s)

# Loop to append to a new string
result = ""
for i in range(len(s)):
    result = s[i] + result

# Print the result
print("Reversed string:", result)
/**
 * To run this code, you need to have Java installed on your computer, then:
 * - Create a file named `Main.java` in a directory of your choice.
 * - Copy this code in the file.
 * - Open a terminal in the directory where the file is located.
 * - Run the command `javac Main.java` to compile the code.
 * - Run the command `java -ea Main` to execute the compiled code.
 * Note: '-ea' is an option to enable assertions in Java.
 */
public class Main {

    /**
     * This is the entry point of your program.
     * It contains the first codes that are going to be executed.
     *
     * @param args Command line arguments received.
     */
    public static void main(String[] args) {
        // The string to manipulate
        String s = "IMT Atlantique";
        System.out.println(s);

        // Loop to append to a new string
        String result = "";
        for (int i = 0; i < s.length(); i++) {
            result = s.charAt(i) + result;
        }

        // Print the result
        System.out.println("Reversed string: " + result);
    }

}

Dans l’interpréteur Python interactif, exécutez instruction par instruction le code ci-dessus. À quoi ressemble la sortie ?

Correction
Sortie
$ python3
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> # The string to manipulate
>>> s = "IMT Atlantique"
>>> print(s)
IMT Atlantique
>>> 
>>> # Loop to append to a new string
>>> result = ""
>>> for i in range(len(s)):
...     result = s[i] + result
... 
>>> # Print the result
>>> print("Reversed string:", result)
Reversed string: euqitnaltA TMI
IMT Atlantique
Reversed string: euqitnaltA TMI

Pour quitter la session interactive, tapez quit() ou exit(), puis appuyez sur la touche “Entrée”.

2.3 — Utiliser un script Python

Une façon plus efficace d’utiliser l’interpréteur est de mettre toutes vos instructions dans un fichier texte (un fichier script) et de demander à l’interpréteur Python de lire et d’exécuter chaque ligne du fichier.

Habituellement, les scripts Python ont l’extension .py.

Information

Parfois, vous rencontrerez des fichiers contenant des instructions Python avec une extension .ipynb. Vous rencontrerez de tels fichiers dans le projet. Ce sont des “notebooks”, et ils sont destinés à être lus avec un logiciel appelé Jupyter.

Les notebooks permettent d’entrelacer des codes Python et des cellules Markdown, pour fournir une belle visualisation d’un script. De plus, les sorties des commandes Python telles que print (ou les figures produites avec des outils comme matplotlib) apparaissent en ligne. Cela en fait un format pratique pour les tutoriels par exemple.

Pour écrire un script Python avec un fichier, ouvrez un éditeur de texte basique depuis votre interface graphique.

Utilisez l’application “Notepad” par exemple.

Utilisez l’application “Gedit” par exemple.

Utilisez l’application “TextEdit” par exemple.

Dans ce cas, une fois ouvert, allez dans le menu Format et choisissez “Convertir en format texte” avant de taper quoi que ce soit. Le format Rich Text Format (RTF) n’est pas souhaité.

Important

Les outils riches tels que Microsoft Word, LibreOffice ou Pages ne fonctionneront pas pour cela. Ils ne produiront pas des fichiers texte simples, mais enrichiront le texte avec beaucoup de méta-informations qui ne peuvent pas être interprétées par l’interpréteur Python.

Ensuite, écrivez print("Hello World!") dans le fichier, et enregistrez ce fichier texte sous le nom hello_world.py à l’emplacement de votre choix. Pour garder les choses organisées, vous pouvez créer un dossier spécifique pour stocker ce script et les suivants. Par exemple, dans quelque chose comme <docs>/IMT/computer_science/s5/env/session_2/, où <docs> représente le répertoire où vous stockez vos documents.

Pour exécuter le script :

  1. Ouvrez un terminal (ou utilisez-en un déjà ouvert).

  2. Naviguez vers le répertoire où vous avez enregistré votre fichier Python. Par exemple (changez <docs> par le répertoire nécessaire) :

    cd <docs>\IMT\computer_science\s5\env\session_2\
    cd <docs>\IMT\computer_science\s5\env\session_2\
    cd <docs>/IMT/computer_science/s5/env/session_2/
    cd <docs>/IMT/computer_science/s5/env/session_2/

    Vous pouvez vérifier que vous êtes dans le bon répertoire en exécutant :

    echo %cd%
    Get-Location
    pwd
    pwd
  3. Lancez l’interpréteur Python sur le fichier hello_world.py en tapant la commande suivante :

    python hello_world.py
    python hello_world.py
    python3 hello_world.py
    python3 hello_world.py
  4. Vous devriez voir le même résultat qu’auparavant :

    Sortie
    Hello World!
    Hello World!
    Hello World!
    Hello World!

Si vous le souhaitez, en exercice, créez un nouveau fichier et collez-y le code que nous vous avons donné plus tôt pour inverser une chaîne. Puis, exécutez l’ensemble du fichier en utilisant l’exécutable Python.

À quoi ressemble la sortie ?

Sortie
IMT Atlantique
Reversed string: euqitnaltA TMI
IMT Atlantique
Reversed string: euqitnaltA TMI

2.4 — Exécuter un script Python avec des arguments

Écrire un script dans un fichier a aussi l’avantage de vous permettre de passer des arguments au script. C’est très pratique si vous voulez créer un script qui peut facilement être utilisé avec différentes entrées.

Néanmoins, cette section est optionnelle dans le cadre de cette activité. Vous pouvez y revenir plus tard, si vous êtes intéressé ou si vous avez besoin d’une telle fonctionnalité.

Exemple

Lorsque vous apprenez à manipuler un terminal, vous avez déjà rencontré ces arguments. Par exemple, lorsque vous exécutez la commande suivante :

dir docs
Get-ChildItem docs
ls docs
ls docs

Vous donnez l’argument docs à la commande ls/dir/Get-ChildItem. Vous demandez donc de lister le contenu du répertoire docs dans le répertoire de travail courant du terminal.

En Python, vous pouvez accéder aux arguments fournis au script Python en utilisant la variable sys.argv. Mettons à jour le programme “Hello World !” pour illustrer cela. Ouvrez votre fichier hello_world.py, et mettez à jour son contenu comme suit :

# Needed imports
import sys

# Check if argument is provided
# The list sys.argv contains:
# - The name of the script ("hello_world.py" in our case), in sys.argv[0].
# - The arguments (if provided), in sys.argv[1:].
if len(sys.argv) <= 1:
    print("Please provide a name!")
    sys.exit(1)

# Print a string to the shell
print("Hello %s!" % sys.argv[1])
/**
 * To run this code, you need to have Java installed on your computer, then:
 * - Create a file named `Main.java` in a directory of your choice.
 * - Copy this code in the file.
 * - Open a terminal in the directory where the file is located.
 * - Run the command `javac Main.java` to compile the code.
 * - Run the command `java -ea Main` to execute the compiled code.
 * Note: '-ea' is an option to enable assertions in Java.
 */
public class Main {

    /**
     * This is the entry point of your program.
     * It contains the first codes that are going to be executed.
     *
     * @param args Command line arguments received.
     */
    public static void main(String[] args) {
        // Check if argument is provided
        if (args.length <= 0) {
            System.out.println("Please provide a name!");
            System.exit(1);
        }

        // Print a string to the shell
        System.out.println("Hello " + args[0] + "!");
    }

}

Puis, exécutez votre script depuis le terminal trois fois comme suit :

python hello_world.py
python hello_world.py World
python hello_world.py "my friend"
python hello_world.py
python hello_world.py World
python hello_world.py "my friend"
python3 hello_world.py
python3 hello_world.py World
python3 hello_world.py "my friend"
python3 hello_world.py
python3 hello_world.py World
python3 hello_world.py "my friend"

La sortie devrait ressembler à ceci :

Sortie
Please provide a name!
Hello World!
Hello my friend!
Please provide a name!
Hello World!
Hello my friend!
Please provide a name!
Hello World!
Hello my friend!
Please provide a name!
Hello World!
Hello my friend!

De plus, vous avez peut-être déjà rencontré des arguments nommés commençant par un - ou un -- lors de l’exécution de commandes.

Exemple

Par exemple, regardez la commande suivante :

dir /O-D /T:W docs
Get-ChildItem docs | Sort-Object LastWriteTime -Descending
ls -l --sort time docs
ls -t -l docs

Cette syntaxe permet d’ajouter des arguments nommés au script que vous exécutez. Regardons l’onglet Linux, qui est le plus proche de ce que vous pouvez faire en Python :

  • L’option -l indique que la commande ls doit donner le nom long des fichiers listés.
  • L’option --sort time indique que les fichiers listés doivent être triés par date de création.
  • La commande se termine par l’argument docs comme avant.

Avec un script Python, vous pouvez créer des arguments nommés similaires. Pour cela, vous avez besoin de la bibliothèque argparse :

# Needed imports
import argparse
import datetime

# Initialize parser
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)

# Add options
parser.add_argument("-d", "--date", default=False, action="store_true", help="Prints the date")
parser.add_argument("-n", "--name", type=str, default="World", help="Customize the name to print")

# Parse the arguments
args = parser.parse_args()
config = vars(args)

# Print a string to the shell
# Here we use a syntactic sugar of Python
# The first line below is equivalent to the following lines:
# date_str = ""
# if config["date"]:
#     date_str = " Today is %s" % datetime.datetime.now().strftime("%Y-%m-%d")
date_str = (" Today is %s" % datetime.datetime.now().strftime("%Y-%m-%d")) if config["date"] else ""
print("Hello %s!%s" % (config["name"], date_str))
// Needed imports
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;

/**
 * To run this code, you need to have Java installed on your computer, then:
 * - Create a file named `Main.java` in a directory of your choice.
 * - Copy this code in the file.
 * - Open a terminal in the directory where the file is located.
 * - Run the command `javac Main.java` to compile the code.
 * - Run the command `java -ea Main` to execute the compiled code.
 * Note: '-ea' is an option to enable assertions in Java.
 */
public class Main {

    /**
     * This is the entry point of your program.
     * It contains the first codes that are going to be executed.
     *
     * @param args Command line arguments received.
     */
    public static void main(String[] args) {
        // Initialize parser
        Map<String, String> config = new HashMap<>();
        boolean showDate = false;
        String name = "World";

        // Add options
        for (int i = 0; i < args.length; i++) {
            switch (args[i]) {
                case "-d":
                case "--date":
                    showDate = true;
                    break;

                case "-n":
                case "--name":
                    if (i + 1 < args.length) {
                        name = args[i + 1];
                        i++;
                    } else {
                        System.out.println("Error: No name provided with the --name option");
                        System.exit(1);
                    }
                    break;

                default:
                    System.out.println("Unknown option: " + args[i]);
                    System.exit(1);
            }
        }
        config.put("name", name);
        config.put("date", String.valueOf(showDate));

        // Print a string to the shell
        String dateStr = showDate ? " Today is " + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) : "";
        System.out.println("Hello " + config.get("name") + "!" + dateStr);
    }

}

Puis, exécutez votre script depuis le terminal plusieurs fois comme suit :

python hello_world.py
python hello_world.py -n "my friend"
python hello_world.py --name "my friend"
python hello_world.py -d
python hello_world.py --date
python hello_world.py -d -n "my friend"
python hello_world.py
python hello_world.py -n "my friend"
python hello_world.py --name "my friend"
python hello_world.py -d
python hello_world.py --date
python hello_world.py -d -n "my friend"
python3 hello_world.py
python3 hello_world.py -n "my friend"
python3 hello_world.py --name "my friend"
python3 hello_world.py -d
python3 hello_world.py --date
python3 hello_world.py -d -n "my friend"
python3 hello_world.py
python3 hello_world.py -n "my friend"
python3 hello_world.py --name "my friend"
python3 hello_world.py -d
python3 hello_world.py --date
python3 hello_world.py -d -n "my friend"

La sortie devrait ressembler à ceci :

Sortie
Hello World!
Hello my friend!
Hello my friend!
Hello World! Today is 2024-08-12
Hello World! Today is 2024-08-12
Hello my friend! Today is 2024-08-12
Hello World!
Hello my friend!
Hello my friend!
Hello World! Today is 2024-08-12
Hello World! Today is 2024-08-12
Hello my friend! Today is 2024-08-12
Hello World!
Hello my friend!
Hello my friend!
Hello World! Today is 2024-08-12
Hello World! Today is 2024-08-12
Hello my friend! Today is 2024-08-12
Hello World!
Hello my friend!
Hello my friend!
Hello World! Today is 2024-08-12
Hello World! Today is 2024-08-12
Hello my friend! Today is 2024-08-12

Dans les exemples précédents, la première ligne du script import X (X étant sys ou argparse) indique que le module X sera utilisé. Un module est une collection de variables, fonctions, etc. qui servent un but particulier. Certains sont faits pour l’interaction système, l’analyse d’arguments, mais aussi les calculs mathématiques, le traitement du signal, l’intelligence artificielle, etc. Nous en parlerons plus tard dans la session de programmation 2.

Information

Notez que vous pouvez combiner les arguments passés via argparse et les arguments passés via sys.argv.

Quels paramètres l’interpréteur Python accepte-t-il ?

Comme la plupart des commandes, il suffit de taper python --help dans votre terminal pour savoir avec quelles options, vous pouvez appeler votre interpréteur Python.

3 — Les environnements virtuels Python

Les programmes Python utilisent souvent des paquets et modules qui ne font pas partie de la bibliothèque standard. Ils nécessitent aussi, parfois, une version spécifique d’une bibliothèque, par exemple parce qu’un certain bogue a été corrigé ou encore que le programme a été implémenté en utilisant une version obsolète de l’interface de cette bibliothèque.

Cela signifie qu’il n’est pas toujours possible, pour une installation unique de Python, de couvrir tous les besoins de toutes les applications. Basiquement, si une application A dépend de la version 1.0 d’un module et qu’une application B dépend de la version 2.0, ces dépendances entrent en conflit et installer la version 1.0 ou 2.0 laisse une des deux applications, incapable de fonctionner.

Il est important donc de créer pour chaque application ou bien chaque groupe de programme, un environnement virtuel dans lequel vont pouvoir être installés des paquets ou bibliothèques spécifiques (y compris avec des versions spécifiques)

3.1 — Pourquoi avoir besoin de modules ou paquets ?

Exemple

Imaginons que nous souhaitions que le script précédent affiche « Bonjour » suivi de la date du jour. Il est évidemment hors de question de mettre à jour manuellement le fichier qui contient le script chaque jour.

Nous allons donc modifier le script Python précédent (vous pouvez aussi en créer un autre) et faire appel à un module particulier datetime qui contient la classe date dont sa méthode today() nous fournit la date du jour.

from datetime import date

print("Hello, today's date is", date.today())

L’exécution donnera le résultat attendu.

Dans cet exemple, la première ligne du script from datetime import date indique que la classe date du module datetime sera utilisée. Cela signifie simplement que cette classe et ses méthodes, définies par un fichier datetime.py, seront accessibles à votre code. L’interpréteur sait où trouver ce ou ces fichiers, car ils ont été installés ensemble lors de la procédure d’installation.

De nombreux autres modules ont également été installés : ils constituent la bibliothèque standard Python. Cependant, selon votre domaine (traitement du signal, sciences des données…), cette bibliothèque peut ne pas offrir certaines fonctionnalités spécifiques. C’est pourquoi des modules ou packages externes existent pour offrir des fonctionnalités supplémentaires au développeur.

Python : modules ou paquets

En Python, les modules et les paquets organisent et structurent le code, mais ont des objectifs différents.

En termes simples, un module est un fichier unique contenant du code Python, tandis qu’un paquet est un ensemble de modules organisés selon une hiérarchie de répertoires.

Si vous avez déjà créé un programme en Python, vous avez certainement déjà rencontré différents paquets Python tels que numpy, pandas, matplotlib, seaborn et des modules Python tels que math, random, sys, datetime

3.2 — Quel outil pour installer de nouveaux paquets ?

L’outil le plus populaire pour installer des paquets Python, et celui inclus dans les versions modernes de Python, est pip (Package Installer for Python).

Normalement, cet outil est installé avec l’interpréteur Python. Vous pouvez le vérifier en exécutant la commande suivante dans un terminal.

‘pip’ est-il installé ?
python -m pip --version
python -m pip --version

Si pip n’est pas installé, consultez le site Web officiel de Python pour l’installer.

Quels sont les paquets installés dans l’environnement courant ?

Il est intéressant de connaître la liste des paquets installés dans un environnement afin de pouvoir reconstruire si besoin cet environnement (changement de machine, déploiement, …). Pour cela, il suffit d’invoquer pip avec l’argument list.

Liste des paquets installés ?
python -m pip list
python -m pip list

Quelles informations vous retourne cette commande ? Est-ce normal pour un environnement nouvellement créé ?

Avertissement

Les versions récentes de Python ne permettent plus d’installer des paquets au niveau global de l’ordinateur.

Avant de pouvoir installer effectivement de nouveaux paquets, il est donc nécessaire de créer un environnement local (ou virtuel) dans lequel ces paquets seront installés et l’interpréteur Python exécuté. C’est l’objet de la section qui suit.

3.3 — Qu’est-ce qu’un environnement virtuel ?

Pour les motifs évoqués précédemment, il n’est pas du tout une bonne pratique d’installer des paquets à un niveau global (qui impacte les exécutions de tous les programmes Python, y compris ceux que vous n’avez pas développés).

Pour éviter conflits et erreurs d’exécution, il est demandé de travailler (et donc d’installer les nouveaux paquets) au sein d’environnements virtuels, environnements qui isolent le contexte de votre projet vis-à-vis de l’existant sur votre machine. Cette technique d’environnement virtuel vous permet de garder le contrôle des paquets installés incluant leurs numéros de version, pour permettre l’exécution de votre programme ; la connaissance de ce contexte est cruciale si vous devez déployer votre programme (ou tout simplement exécuter votre programme) sur une autre machine.

a. Comment créer un environnement virtuel ?

La première étape est de créer un dossier (ici, nommé ueinfos5) pour y placer votre projet / TP / … Vous êtes libre de choisir l’emplacement de ce dossier dans l’arborescence de vos fichiers ; ce choix d’emplacement dépend de votre politique d’organisation de vos fichiers sur votre disque.

Une fois ce dossier créé, allez dans ce dossier.

Création du dossier ueinfos5
mkdir ueinfos5
cd ueinfos5
New-Item -Name "ueinfos5" -ItemType Directory
cd ueinfos5
mkdir ueinfos5
cd ueinfos5

Ensuite, à partir de ce dossier (celui de votre projet, par exemple), il faut invoquer le module venv de Python pour créer un environnement virtuel spécifique. Ce module venv sert aussi à gérer les environnements virtuels. Vous donnerez le nom env1 à cet environnement.

Création de l’environnement virtuel env1
python -m venv env1
python3 -m venv env1

Vérifiez qu’un nouveau dossier nommé env1 a bien été créé dans le dossier courant. Ce dossier env1 contient des sous-dossiers contenant une copie de l’interpréteur Python et d’autres fichiers utiles.

A ce stade, l’environnement virtuel env1 est bien créé mais pas encore activé.

b. Comment activer d’un environnement virtuel ?

A présent pour faire en sorte que l’interpréteur Python s’exécute dans l’environnement env1 c’est-à-dire dans un contexte spécifique (avec les paquets que vous aurez choisis), il faut l’activer en tapant les instructions suivantes dans le terminal :

Activation de l’environnement env1
env1\Scripts\activate
source env1/bin/activate

Ce script est écrit pour le shell bash. Si vous utilisez csh, utilisez la variante activate.csh.

Que constatez-vous ?

Impacts de la sélection de l’environnement env1

Activer un environnement virtuel :

  • change le prompt de votre ligne de commande pour afficher le nom de l’environnement virtuel que vous utilisez,
  • permet l’exécution de la version spécifique de Python installée dans l’environnement, version qui peut être différente de celle installée globalement,
  • permet d’utiliser les paquets spécifiques, installés dans cet environnement (à voir ensuite).

Pour vérifier cela, exécuter le script Python suivant

import sys
sys.path

Quelles sont vos conclusions ?

Pour desactiver un environnement virtuel, tapez simplement

deactivate

pour revenir à l’environnement global.

3.4 — Comment installer des paquets externes ?

A présent que l’environnement virtuel est activé, les paquets externes dont vous pourriez avoir besoin seront installés localement dans cet environnement sans perturber le reste de votre ordinateur.

Mais … où trouver des paquets utiles ?

PyPI (Python Package Index) est un référentiel de logiciels pour le langage de programmation Python. PyPI vous aide à trouver et installer les logiciels développés et partagés par la communauté Python.

L’installateur pip utilise le référentiel PyPI pour installer les paquets que vous souhaitez.

Dans le cas de cette session, nous voulons pouvoir afficher des courbes mathématiques dans un repère. D’après le référentiel PyPI, en faisant quelques recherches simples, le paquet matplotlib est tout à fait adapté pour cette tâche.

Exemple simple

Plus spécifiquement, nous voulons pouvoir afficher une figure qui trace dans un repère, une ligne entre les quatre points : (1,1), (2,4), (3,9) et (4,16).

Le script Python suivant permet de réaliser cela.

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.xlabel('some numbers')
plt.ylabel('square values')
plt.show()

Exécutez ce script. Que se passe-t-il et pourquoi ?

Le paquet matplotlib que vous voulez utiliser, n’est pas installé dans votre environnement Il faut l’installer et cette tâche est très simple.

En gros, cela consiste à exécuter pip en utilisant l’interpréteur Python et en spécifiant le package que vous souhaitez installer.

Installation du paquet matplotlib
python -m pip install matplotlib

Si le paquet ‘matplotlib’ est déjà installé, vous pouvez le mettre à jour avec l’option ‘-U’.

python -m pip install -U matplotlib
python -m pip install matplotlib

Si le paquet ‘matplotlib’ est déjà installé, vous pouvez le mettre à jour avec l’option ‘-U’.

python -m pip install -U matplotlib

A présent, si vous exécutez de nouveau le script, vous devez obtenir la fenêtre suivante : Matplotlib figure

Pour plus d’informations sur l’utilisation de pip, comme décrit ici.

Attention

Avant d’installer tout paquet, vérifiez le contenu de la page de description du projet dans le dépôt PyPI car vous y trouverez des informations pertinentes sur le paquet (fonctionnalités) et sur la manière correcte de l’utiliser (versions compatibles de l’interpréteur Python, dépendances ou contraintes spécifiques, bibliothèques externes supplémentaires à installer pour obtenir des fonctionnalités supplémentaires, …).

4 — Application pratique

Votre objectif est de créer un nouvel environnement de travail en mettant en oeuvre les notions et outils abordés jusqu’à présent. Il est donc important que vous soyez capable individuellement de réaliser les tâches demandées et d’en comprendre la nécessité.

A vous de jouer :

  • créer un nouveau dossier (par exemple, ues5math).
  • créer un nouvel environnement virtuel pour ce dossier.
  • installer pour cet environnement, les paquets matplotlib, numpy, scipy. Que proposent ces paquets ?
  • tester le script suivant pour vérifier que les installations ont été effectuées correctement et que le script produit les résultats attendus :

Cet exemple a pour objectif de calculer l’expression mathématique :

$$​I(a,b)=\int_{0}^{1} ax^2+b \, dx$$

Le script Python suivant calcule donc l’intégrale I(2,1) :

from scipy.integrate import quad
def integrand(x, a, b):
  return a*x**2 + b

a = 2
b = 1
I = quad(integrand, 0, 1, args=(a,b))
print(I)

Exécutez ce script. Que se passe-t-il ?

Si l’exécution est correcte, un tuple doit être affiché, avec le premier élément contenant la valeur estimée de l’intégrale et le deuxième élément contenant une estimation de l’erreur d’intégration absolue.

(1.6666666666666667, 1.8503717077085944e-14)
  • basculer dans le répertoire ues5info et l’environnement de travail env1.
  • vérifier (prouver) que vous êtes bien dans la situation demandée.
  • le script précédent fonctionne-t-il ?

A présent, vous avez compris les différentes étapes nécessaires pour développer et exécuter un programme Python dans un environnement que vous maîtrisez.

Vous êtes donc prêt à effectuer à l’activité suivante qui va consister à installer et utiliser un logiciel dit “environnement de développement intégré” (ici Microsoft Visual Studio Code). Ce logiciel va vous apporter de l’aide en automatisant certaines taches mais aussi en vous proposant des options, des suggestions et des outils complémentaires pour développer et déboguer vos programmes Python.

Pour aller plus loin

Quelques pistes utiles à explorer :

  • Vous pouvez pour un même répertoire, avoir plusieurs environnements virtuels à disposition.
  • Utilisation de la commande
python -m pip freeze > requirements.txt

pour exporter la liste des paquets installés et leur dépendances dans le fichier texte requirements.txt.

  • Utilisation de ce fichier texte pour automatiser l’installation des paquets nécessaires dans un nouvel environnement (même machine, machine différente, déploiement, …) via la commande
python -m pip install -r requirements.txt
Information

Y a-t-il quelque chose que vous auriez aimé voir ici ?

Faites-le nous savoir sur le serveur Discord ! Peut-être pouvons-nous l’ajouter rapidement. Sinon, cela nous aidera à améliorer le cours pour l’année prochaine !

Pour aller au-delà

On dirait que cette section est vide !

Information

Y a-t-il quelque chose que vous auriez aimé voir ici ?

Faites-le nous savoir sur le serveur Discord ! Peut-être pouvons-nous l’ajouter rapidement. Sinon, cela nous aidera à améliorer le cours pour l’année prochaine !