Cet article de Sam&Max se penche sur la variable d'environnement PYTHONSTARTUP qui permet d'indiquer un fichier .py à exécuter au démarrage d'un shell Python.
Si cette option peut paraître farfelue de prime abord, elle est très pratique pour le manipulations et tests.
Avec ce fichier startup vous pouvez:
- Déjà pré-importer les bibliothèques que vous utilisez au jour le jour.
- Vous préparer un répertoire Temporaire prêt à l'emploit.
- Afficher le détail de l'environnement virtuel (s'il est activé)
- Créer des raccourcis pour les fonctions p = print et pp = pprint.
- *** UNE PERLE *** Créer un objet Store pour garder des objets entre deux sessions shell!!.
import sys import os import shelve import atexit ... voyez le code complet dans ... l'article de SAM & MAX # avoir un dico persistant pour garder des objets entre deux sessions. Pratique quand # on a un gros array numpy qu'on n'a pas envie de se faire chier à se recréer class Store(object): def __init__(self, filename): object.__setattr__(self, 'DICT', shelve.DbfilenameShelf(filename)) # cleaning the dict on the way out atexit.register(self._clean) def __getattribute__(self, name): if name not in ("DICT", '_clean'): try: return self.DICT[name] except: return None return object.__getattribute__(self, name) def __setattr__(self, name, value): if name in ("DICT", '_clean'): raise ValueError("'%s' is a reserved name for this store" % name) self.DICT[name] = value def _clean(self): self.DICT.sync() self.DICT.close() # Ainsi on peut faire store.foo = 'bar' et récupérer store.foo à la session # suivante. Moi je store tout dans un truc temporaire mais si vous voulez # garder la persistance entre deux reboots, il suffit de choisir un autre # dossier. python_version = "py%s" % sys.version_info.major store = Store(os.path.join(TEMP_DIR, 'store.%s.db') % python_version)
Ressource
Aucun commentaire:
Enregistrer un commentaire