Sam & Max » startup http://sametmax.com Du code, du cul Sat, 07 Nov 2015 10:56:13 +0000 en-US hourly 1 http://wordpress.org/?v=4.1 Exécuter du code à tout lancement de Python 11 http://sametmax.com/executer-du-code-a-tout-lancement-de-python/ http://sametmax.com/executer-du-code-a-tout-lancement-de-python/#comments Mon, 24 Jun 2013 10:54:57 +0000 http://sametmax.com/?p=6461 Je vous avais montré comment lancer du code au démarrage du shell iPython, et on peut faire quelque chose de similaire pour le shell Python ordinnaire avec la variable d’environnement PYTHONSTARTUP:

export PYTHONSTARTUP=/chemin/vers/fichier/python/a/executer/au/demarrage.py

Mais comment lancer du code au démarrage pour Python quand on est PAS dans un shell ?

Comme pour l’exécution du code à la fermeture de la VM, il existe bien entendu un mécanisme pour cela.

Ouvez un shell, et tapez:

>>> import site
>>> site.getusersitepackages()
'/home/sam/.local/lib/python2.7/site-packages'

Vous obtenez ainsi le dossier des sites packages locaux, c’est à dire un dossier qui est dans le PYTHON PATH, mais uniquement pour l’utilisateur courant. Donc vous pouvez mettre dedans toute bibliothèque Python que vous voulez importable de partout, mais uniquement pour vous.

Dans ce dossier, créez un fichier nommé usercustomize.py, et voilà ! Tout ce qui est dans ce fichier est automatiquement exécuté au démarrage de Python.

Attention cependant, il est exécuté très tôt, et donc certaines choses ne sont pas encore chargées, telle que sys.argv ou __builtin__.

Il faut donc ruser un peut. Si vous êtes une loque qui n’aime pas taper import ipdb; ipdb.set_trace(), vous pouvez par exemple mettre dedans :

import __builtin__
 
from pdb import set_trace
 
__builtin__.set_trace = set_trace

Et maintenant, dans votre code, vous pourrez appeler set_trace() de pdb directement, sans import, sans préfixe.

Attention tout de même à ce que vous allez mettre là. Si vous commencez à trop trafiquer votre installation, vos programmes pourraient marcher dessus et pas ailleurs. Testez toujours vos logiciels sur des installations de Python standards.

Bonus point: le code de startup d’un codeur Python scientifique.

]]>
http://sametmax.com/executer-du-code-a-tout-lancement-de-python/feed/ 11