Importez automatiquement des modules lors de la saisie de l'interpréteur python ou ipython

120

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

user545424
la source

Réponses:

71

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 que la première invite ne s'affiche en mode interactif. Le fichier est exécuté dans le même espace de noms 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, créez simplement un script python avec l'instruction import et pointez la variable d'environnement vers elle. Cela dit, rappelez-vous que «l'explicite est toujours meilleur que l'implicite», alors ne vous fiez pas à ce comportement pour les scripts de production.

Pour Ipython, consultez ce tutoriel sur la création d'un fichier ipython_config

Dhara
la source
@mklauber, merci, mais la solution acceptée est obsolète. Cependant, cela a inspiré mon montage. @ OP: Voir ma réponse modifiée
Dhara
3
@ user545424 au moment de la rédaction de cet article (ipython 1.1.0) prend également en charge PYTHONSTARTUP.
pflaquerre
Le réglage env PYTHONSTARTUP="~/.startup.py"n'a pas fonctionné pour moi
Seanny123
Juste une note export PYTHONSTARTUP=~/.python_shell_startup.pypour définir la variable.
PallavBakshi
78

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 fichier .pyou .ipydans le ~/.ipython/profile_default/startuprépertoire et il sera automatiquement exécuté. Ainsi, vous pouvez simplement placer import numpy as npdans un fichier simple et vous aurez np dans l'espace de noms de votre invite ipython.

L'option 2 fonctionnera en fait 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 toujoursnp être disponible pour vous, mettez-le dans le répertoire de démarrage.

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

ravenac95
la source
2
Dans Ubuntu 14.04, le répertoire est en fait: ~/.config/ipython/profile_default/startup/et non~/.ipython/profile_default/startup/
Peter
1
Malheureusement, l'option 2 ci-dessus ne permet pas de compléter les onglets.
user1717828
21

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 lorsque je lance le shell, je reçois un rappel qu'il est en vigueur, et ce qui a déjà été importé. Le ppraccourci est également très pratique ...

Ned Batchelder
la source
Cela n'a pas fonctionné pour moi sous Linux. Dois-je dire à Python de chercher dans mon répertoire personnel ou quelque chose?
Seanny123
oops: j'ai oublié une étape importante: je l'ai ajoutée: définir PYTHONSTARTUP
Ned Batchelder
Je ne sais jamais quand le ~substitut $HOMEfonctionne ou non, mais au lieu de ce chemin relatif, j'ai dû utiliser un chemin absolu sur MacOS, fish et python3.
rien333
@Ned Batchelder, merci beaucoup, c'est ce que je cherchais. question secondaire, je l'utilise sur Windows et le raccourci pp ne fonctionne pas. Pourriez-vous nous conseiller? >>> pp <function pprint at 0x0000020DAF90C8C8> >>> pp () Traceback (dernier appel en dernier): Fichier "<stdin>", ligne 1, dans <module> TypeError: pprint () missing 1 argument positionnel requis: 'objet' >>>
Forever Learner
5

Bien que la création d'un script de démarrage personnalisé comme le suggère ravenac95 soit la meilleure réponse générale dans la plupart des cas, cela ne fonctionnera pas dans les circonstances où vous souhaitez utiliser un fichier . 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 (pour Ubuntu, il se trouve dans ) et ajoutez quelque chose comme ce qui suit en bas:from __future__ import Xprofile_default~/.ipython/profile_default

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

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

définissez simplement un alias, par exemple mettez 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 uniquement python avec python. Le comportement des scripts Python n'est pas modifié.

bleu
la source
PYTHONSTARTUPn'est invoqué qu'en mode interactif , donc le comportement des scripts python reste intact de toute façon. Un alias pourrait également être créé avec une référence de fichier:alias pynp='PYTHONSTARTUP="~/.startup.py" python'
F.Raab
2

Vous pouvez créer un script python normal comme import_numpy.pyou tout ce que vous voulez

#!/bin/env python3
import numpy as np

puis lancez-le avec le -idrapeau.

python -i import_numpy.py

Une manière comme celle-ci vous donnera la flexibilité de choisir uniquement les modules que vous souhaitez pour différents projets.

rɑːdʒɑ
la source
1

Comme ravenac95 l'a mentionné dans sa réponse , vous pouvez créer un profil personnalisé ou modifier le profil par défaut. Cette réponse est une vue rapide des commandes Linux nécessaires pour import numpy as npautomatiquement.

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 didacticiel de configuration IPython pour en savoir plus sur la configuration des profils. Voir .ipython/profile_default/startup/READMEpour comprendre comment fonctionne le répertoire de démarrage.

anishpatel
la source
1

Mon ipythonappel par défaut est

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

--pylabest une ipythonoption depuis un certain temps. Il importe numpyet (des parties de) matplotlib. J'ai ajouté l' --Inter...option pour 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.

hpaulj
la source