16. Annexe
**********


16.1. Mode interactif
=====================


16.1.1. Gestion des erreurs
---------------------------

Quand une erreur se produit, l'interpréteur affiche un message
d'erreur et la trace d'appels. En mode interactif, il revient à
l'invite de commande primaire ; si l'entrée provient d'un fichier,
l'interpréteur se termine avec un code de sortie non nul après avoir
affiché la trace d'appels (les exceptions gérées par une clause
"except" dans une instruction "try" ne sont pas considérées comme des
erreurs dans ce contexte). Certaines erreurs sont inconditionnellement
fatales et provoquent la fin du programme avec un code de sortie non
nul ; les incohérences internes et, dans certains cas, les pénuries de
mémoire sont traitées de la sorte. Tous les messages d'erreur sont
écrits sur le flux d'erreur standard ; l'affichage normal des
commandes exécutées est écrit sur la sortie standard.

Taper le caractère d'interruption (généralement "Ctrl+C" ou
"Supprimer") au niveau de l'invite de commande primaire annule
l'entrée et revient à l'invite [1]. Saisir une interruption tandis
qu'une commande s'exécute lève une exception "KeyboardInterrupt" qui
peut être gérée par une instruction "try".


16.1.2. Scripts Python exécutables
----------------------------------

Sur les systèmes Unix, un script Python peut être rendu directement
exécutable, comme un script *shell*, en ajoutant la ligne

   #!/usr/bin/env python3.5

(en supposant que l'interpréteur est dans le "PATH" de l'utilisateur)
au début du script et en rendant le fichier exécutable. "'#!'" doivent
être les deux premiers caractères du fichier. Sur certaines
plateformes, cette première ligne doit finir avec une fin de ligne de
type Unix ("'\n'") et pas de type Windows ("'\r\n'"). Notez que le
caractère croisillon, "'#'", est utilisé pour initier un commentaire
en Python.

Un script peut être rendu exécutable en utilisant la commande
**chmod**.

   $ chmod +x myscript.py

Sur les systèmes Windows il n'y a pas de "mode exécutable".
L'installateur Python associe automatiquement les fichiers en ".py"
avec "python.exe" de telle sorte qu'un double clic sur un fichier
Python le lance comme un script. L'extension peut aussi être ".pyw".
Dans ce cas, la console n'apparait pas.


16.1.3. Configuration du mode interactif
----------------------------------------

En mode interactif, il peut être pratique de faire exécuter quelques
commandes au lancement de l’interpréteur. Configurez la variable
d'environnement "PYTHONSTARTUP" avec le nom d'un fichier contenant les
instructions à exécuter, à la même manière du ".profile" pour un
*shell* Unix.

Ce fichier n'est lu qu'en mode interactif, pas quand Python lit les
instructions depuis un fichier, ni quand "/dev/tty" est donné
explicitement comme fichier source (pour tout le reste, Python se
comporte alors comme dans une session interactive). Les instructions
de ce fichier sont exécutées dans le même espace de nommage que vos
commandes, donc les objets définis et modules importés peuvent être
utilisés directement dans la session interactive. Dans ce fichier, il
est aussi possible de changer les invites de commande "sys.ps1" et
"sys.ps2".

Si vous voulez exécuter d'autres fichiers du dossier courant au
démarrage, vous pouvez le programmer dans le fichier de démarrage
global, par exemple avec le code suivant : "if
os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read())". Et
si vous voulez exécuter le fichier de démarrage depuis un script, vous
devez le faire explicitement dans le script :

   import os
   filename = os.environ.get('PYTHONSTARTUP')
   if filename and os.path.isfile(filename):
       with open(filename) as fobj:
           startup_file = fobj.read()
       exec(startup_file)


16.1.4. Modules de personnalisation
-----------------------------------

Python peut être personnalisé *via* les modules "sitecustomize" et
"usercustomize". Pour découvrir comment ils fonctionnent, vous devez
d'abord trouver l'emplacement de votre dossier « site-packages »
utilisateur. Démarrez Python et exécutez ce code :

   >>> import site
   >>> site.getusersitepackages()
   '/home/user/.local/lib/python3.5/site-packages'

Vous pouvez maintenant y créer un fichier "usercustomize.py" et y
écrire ce que vous voulez. Il est toujours pris en compte par Python,
peu importe le mode, sauf lorsque vous démarrez avec l'option "-s" qui
désactive l'importation automatique.

"sitecustomize" fonctionne de la même manière mais est généralement
créé par un administrateur et stocké dans le dossier site-packages
global. Il est importé avant "usercustomize". Pour plus de détails,
consultez la documentation de "site".

-[ Notes ]-

[1] Un problème avec GNU *Readline* peut l'en empêcher.
