web-dev-qa-db-fra.com

Importez automatiquement les modules lorsque vous entrez dans l'interpréteur python ou ipython

Je me retrouve à taper import numpy as np presque chaque fois que je lance l'interpréteur python. Comment configurer l'interpréteur python ou ipython pour que numpy soit automatiquement importé?)

108
user545424

Utilisez la variable d'environnement PYTHONSTARTUP . De la documentation officielle:

S'il s'agit du nom d'un fichier lisible, les commandes Python de ce fichier sont exécutées avant l'affichage de la première invite en mode interactif. Le fichier est exécuté dans le même espace de noms que celui où les commandes interactives sont exécutées. afin que les objets définis ou importés dans celui-ci puissent être utilisés sans qualification dans la session interactive.

Donc, il suffit de créer un script python avec l'instruction import et de pointer la variable d'environnement vers elle. Cela dit, rappelez-vous que "Explicit est toujours meilleur qu'implicite", alors ne vous fiez pas à cela comportement pour les scripts de production.

Pour Ipython, voir this tutoriel sur la façon de créer un fichier ipython_config

58
Dhara

Pour ipython, il existe deux façons d'y parvenir. Les deux impliquent le répertoire de configuration d'ipython qui se trouve dans ~/.ipython.

  1. Créez un profil ipython personnalisé.
  2. Ou vous pouvez ajouter un fichier de démarrage à ~/.ipython/profile_default/startup/

Pour plus de simplicité, j'utiliserais l'option 2. Tout ce que vous avez à faire est de placer un .py ou .ipy fichier dans le ~/.ipython/profile_default/startup répertoire et il sera automatiquement exécuté. Vous pouvez donc simplement placer import numpy as np dans un fichier simple et vous aurez np dans l'espace de noms de votre invite ipython.

L'option 2 fonctionnera réellement avec un profil personnalisé, mais l'utilisation d'un profil personnalisé vous permettra de modifier les exigences de démarrage et d'autres configurations en fonction d'un cas particulier. Cependant, si vous souhaitez toujours que np soit à votre disposition, mettez-le par tous les moyens dans le répertoire de démarrage.

Pour plus d'informations sur la configuration d'ipython. Les docs ont une explication beaucoup plus complète.

70
ravenac95

J'utilise un fichier ~/.startup.py comme celui-ci:

# Ned's .startup.py file
print("(.startup.py)")
import datetime, os, pprint, re, sys, time
print("(imported datetime, os, pprint, re, sys, time)")

pp = pprint.pprint

Définissez ensuite PYTHONSTARTUP = ~/.startup.py et Python l'utilisera lors du démarrage d'un shell.

Les instructions d'impression sont là, donc quand je démarre le Shell, je reçois un rappel qu'il est en vigueur et ce qui a déjà été importé. Le raccourci pp est aussi très pratique ...

21
Ned Batchelder

Bien que la création d'un script de démarrage personnalisé comme ravenac95suggère est la meilleure réponse générale pour la plupart des cas, elle ne fonctionnera pas dans les circonstances où vous souhaitez utiliser un from __future__ import X. Si vous travaillez parfois en Python 2.x mais que vous souhaitez utiliser la division moderne, il n'y a qu'une seule façon de le faire. Une fois que vous avez créé un profil, modifiez le profile_default (Pour Ubuntu, cela se trouve dans ~/.ipython/profile_default) et ajoutez quelque chose comme ce qui suit en bas:

c.InteractiveShellApp.exec_lines = [
    'from __future__ import division, print_function',
    'import numpy as np',
    'import matplotlib.pyplot as plt',
    ]
4
Teque5

Comme alternative plus simple à la réponse acceptée, sur Linux:

il suffit de définir un alias, par exemple mettre alias pynp='python -i -c"import numpy as np"' dans votre fichier ~/.bash_aliases. Vous pouvez ensuite invoquer python + numpy avec pynp, et vous pouvez toujours utiliser juste python avec python. Python 'le comportement est laissé intact.

3
blue

Vous pouvez créer un script python normal comme import_numpy.py ou tout ce que vous aimez

#!/bin/env python3
import numpy as np

puis lancez-le avec -i drapeau.

python -i import_numpy.py

De cette façon, vous aurez la possibilité de choisir uniquement les modules que vous souhaitez pour différents projets.

2
rɑːdʒɑ

Comme ravenac95 mentionné dans son réponse , vous pouvez soit créer un profil personnalisé, soit modifier le profil par défaut. Cette réponse est un aperçu rapide des commandes Linux nécessaires pour import numpy as np automatiquement.

Si vous souhaitez utiliser un profil personnalisé appelé numpy, exécutez:

ipython profile create numpy
echo 'import numpy as np' >> $(ipython locate profile numpy)/startup/00_imports.py
ipython --profile=numpy

Ou si vous souhaitez modifier le profil par défaut pour toujours importer numpy:

echo 'import numpy as np' >> $(ipython locate profile default)/startup/00_imports.py
ipython

Consultez le tutoriel de configuration IPython pour en savoir plus sur la configuration des profils. Voir .ipython/profile_default/startup/README pour comprendre le fonctionnement du répertoire de démarrage.

1
anishpatel

Mon appel par défaut ipython est

ipython --pylab --nosep --InteractiveShellApp.pylab_import_all=False

--pylab Est une option ipython depuis un certain temps. Il importe numpy et (parties de) matplotlib. J'ai ajouté l'option --Inter... Afin qu'elle n'utilise pas l'importation *, Car je préfère utiliser l'explicite np.....

Cela peut être un raccourci, un alias ou un script.

1
hpaulj