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