Eléments de programmation en Python

Mais où est donc Python?

Pour lancer un programme écrit en Python, nous avons pris l'habitude de frapper une commande du type

~$ python programme.py

Mais les programmes, même écrits en Python, se lancent généralement plus simplement: on indique simplement le nom du fichier qui contient le programme:

~$ programme.py

 ou même plus simplement

~$ programme

Comment cela est-il possible?

  • Ouvre l'un des programmes Python écrits précédemment; prenons input.py.
  • Ouvre la première ligne et indiques-y la notation suivante:

#! /usr/bin/env python

Le programme devient donc:

#! /usr/bin/env python
longueur = input ("Quelle est la longueur? ")
largeur = input ("Quelle est la largeur? ")
.....

Très joli. Vous avez emprunté ça au catalogue d'insultes du capitaine Haddock ?

Il est vrai que la notation peut paraître curieuse. Cela demande quelques explications.

Sous Linux, la commande qui lance l'interpréteur Python se trouve dans le répertoire /usr/bin .

La directive contient, en fait, le chemin vers l'interpréteur.

Dans une console Linux, frappe la commande

~$ /usr/bin/env python

L'interpréteur Python démarre.

Les signes #! placés en tête de la ligne

#! /usr/bin/env python

indiquent qu'il s'agit d'une directive qu'il faut traiter séparément des instructions. Ce n'est pas du code Python.

Lorsque la directive figure en tête d'un programme, l'interpréteur de commandes est averti qu'il doit démarrer l'interpréteur Python pour pouvoir exécuter les instructions qui suivent.

  • Vérifie que la directive #! /usr/bin/env python figure en première ligne du programme.
  • Enregistre le texte du programme et quitte l'éditeur de textes.
  • Dans la console, frappe la commande:

~$ input.py

  • Observe le résultat

toto@info17:~$ input.py
bash: input.py : commande introuvable

Ouaah, ça marche du tonnerre votre truc. Je crois qu'un peu de repos vous fera du bien.

Bah non, tout était prévu. Tirons les conclusions.

  • Lorsqu'un programme est lancé dans une console, l'interpréteur de commande cherche cette commande dans un certain nombre de répertoires.
  • S'il ne trouve pas la commande dans ces répertoires, il annonce qu'elle est introuvable.

Quels sont les répertoires visités? Ceux qui figurent dans une variable système nommée $PATH

  • Dans une console, frappe la commande suivante, en respectant les majuscules et les minuscules

~$ echo $PATH

  • Observe le résultat. Tu devrais obtenir quelque chose de semblable à:

~$ /home/toto/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

qui indique les répertoires par défaut, séparés par un signe " : ".
/home/toto/bin (si tu t'appelles "toto")
/usr/local/sbin
/usr/local/bin
...

Ton répertoire personnel (sans doute /home/toto si tu t'appelles "toto") ne figure pas dans la liste.

  • Dans la console, frappe la commande:

~$ ./input.py

où la notation " ./ " désigne le répertoire actuellement actif. Là où se trouve le programme input.py

  • Observe le résultat

toto@info17:~$ ./input.py
bash: ./input.py: Permission non accordée

Caramba! Encore raté!! Vous n'en avez pas encore assez d'être ridicule?

Tout est toujours sous contrôle. En fait, personne n'a encore reçu l'autorisation d'exécuter ce programme. Mais nous progressons.

  • Dans une console, frappe la commande

~$ ls -l

  • Parmi les résultas, observe une ligne de type suivant (le nom "toto" est remplacé par le tien) et les couleurs n'apparaissent pas comme ci-dessous:

-rw-r--r-- 1 toto root 141 2008-06-05 15:59 input.py

  • le propriétaire du fichier peut le lire et l'écrire (rw - read, write)
  • les membres de son groupe peuvent le lire (r - read)
  • toute autre personne peut le lire (r - read)

Nous allons rendre le programme exécutable par le propriétaire, c'est-à-dire l'utilisateur, c'est-à-dire toi-même.

  • Frappe la commande

~$ chmod u+x input.py

afin de rendre l'utilisateur (u) capable d'exécuter (+x) le programme.

~$ ls -l

-rwxr--r-- 1 toto root 141 2008-06-05 15:59 input.py

Le programme est exécutable, mais seulement par son propriétaire: toi-même.

~$ ./input.py

Hé mais, ça marche!!

Bien sûr. Et plus fort encore: cela fonctionne aussi si l'on supprime l'extension .py du fichier. On peut alors lancer la commande sans même savoir qu'il s'agit d'un programme écrit en Python.

  • Modifie et exécute tes autres programmes déjà écrits.
  • Renomme temporairement l'un ou l'autre d'entre-eux en supprimant l'extension .py du nom du fichier. Vérifie qu'il est toujours exécuté.

L'extension .py devrait être laissée afin de caractériser le programme aux yeux des humains. Mais l'interpréteur de commandes n'en a plus besoin.

Quand tes programmes fonctionnent, passe à la page suivante. Vers la page suivante Page suivante


Dernière modification 18/08/2016 Test dans /info ...