Les options de ligne de commande pour l'interpréteur Python

Pour exécuter des scripts Python, on utilise généralement la commande suivante dans le terminal :

python mon_script.py

Cependant, l'interpréteur Python accepte plusieurs options facultatives qui permettent de contrôler son comportement. La syntaxe générale est :

python [-bBdEhiIOqsSuvVWx?] [-c commande | -m nom_module | script | - ] [arguments]

L'option -c

L'option -c exécute directement le code Python passé en paramètre. Le répertoire de travail courant est ajouté au début de sys.path, et sys.argv[0] vaut "-c".

python -c "import sys; print(sys.argv)"

Cette commande affichera le contenu de sys.argv, démontrant que sys.path inclut le répertoire d'exécution.

L'option -m

L'option -m permet d'exécuter un module ou un package comme un script. Le répertoire courant est également ajouté à sys.path, et sys.argv[0] contient le chemin complet du module exécuté.

Exécution d'un module

En spécifiant un nom de module (sans l'extension .py), Python le recherche dans sys.path et l'exécute en tant que module __main__. Cela équivaut à lancer le fichier directement, mais le module est chargé comme s'il était le point d'entrée principal.

Par exemple, pour un module calcul.py contenant :

if __name__ == "__main__":
    print("Exécution principale")

La commande python -m calcul produira le même résultat que python calcul.py. L'utilisation du suffixe .py avec -m n'est pas recommandée, car cela peut générer des avertissements.

Exécution d'un package

Lorsque l'argument est un nom de package, Python exécute le fichier __main__.py à l'intérieur de ce package. Tous les modules du package, y compris __init__.py, peuvent être initialisés.

Considérons un package mon_package avec les fichiers __init__.py et __main__.py. La commande :

python -m mon_package

exécutera __main__.py comme script principal.

Utilisation avec des outils standards

De nombreux outils Python, comme pip ou pytest, peuvent être invoqués via -m. Cela garantit que l'interpréteur actuel est utilisé et que le répertoire courant est ajouté à sys.path.

python -m pip install mon_module
python -m pytest --verbose test_mod.py

Sans python -m, les commandes pip et pytest fonctionnent aussi, mais l'inclusion de sys.path peut différer.

L'option script

Cette option désigne le fichier script à exécuter. Il peut s'agir d'un fichier .py, d'un répertoire contenant un fichier __main__.py, ou d'une archive zip avec __main__.py. Le chemin peut être absolu ou relatif.

  • Pour un fichier Python, son répertoire parent est ajouté à sys.path.
  • Pour un répertoire ou une archive, le nom du script est ajouté à sys.path.

Dans tous les cas, sys.argv[0] correspond au chemin spécifié dans la commande.

Les arguments (args)

Les arguments supplémentaires passés après le script sont accessibles via sys.argv. Le premier élément (sys.argv[0]) est le nom du script ou "-c"/"-m", et les éléments suivants sont les arguments fournis.

Par exemple, pour un script afficher.py :

import sys
for argument in sys.argv[1:]:
    print(argument)

L'exécution python afficher.py bonjour monde affichera bonjour et monde sur deux lignes distinctes.

Ces options offrent une flexibilité pour adapter l'exécution de Python à différents scénarios, comme le lancement rapide de code ou la gestion de multiples versions de l'interpréteur.

Étiquettes: Python CLI options -c -m

Publié le 20 juin à 16h21