web-dev-qa-db-fra.com

Flux de travail IPython (modifier, exécuter)

Existe-t-il une interface graphique pour IPython qui me permet d'ouvrir/exécuter/modifier des fichiers Python? Ma façon de travailler dans IDLE est d'avoir deux fenêtres ouvertes: le shell et un fichier .py. Je modifie le fichier .py, exécutez-le et interagissez avec les résultats dans le shell.

Est-il possible d'utiliser IPython comme ça? Ou existe-t-il une autre façon de travailler?

50
compie

Lorsque je travaille avec python, j'ai généralement deux fenêtres de terminal ouvertes - une avec IPython et l'autre avec un Vim assez personnalisé.

Deux bonnes ressources:


Bien que cela ressemble à ce que vous voulez, c'est la fonction magique d'IPython %ed/%edit:

Un exemple de ce que vous pouvez faire:

In [72]: %ed
IPython will make a temporary file named: c:\docume~1\wjwe312\locals~1\temp\ipython_edit_ar8veu.py

Dans le dossier je mets:

x = "Hello World"
print 3

Après avoir enregistré et quitté le fichier:

Editing... done. Executing edited code...
3
Out[72]: "x = 'Hello world'\nprint 3\n"

In [73]: x
Out[73]: 'Hello world'

Vous pouvez définir des fonctions ou toute autre chose - n'oubliez pas que le contenu du fichier sera exécuté lorsque vous le fermerez.

Un autre workflow similaire consiste à cd vers le répertoire contenant votre Python que vous éditez avec votre éditeur préféré. Ensuite, vous pouvez %run le script depuis IPython et vous aurez accès à tout ce qui est défini dans le fichier. Par exemple, si vous avez ce qui suit dans le fichier test.py dans ton /home/myself répertoire:

    class Tester(object):
        def __init__(self):
            print "hi"

    def knightme(name):
        print "Hello, Sir ", name

Ensuite, vous pouvez effectuer les opérations suivantes:

In [42]: cd /home/myself
/home/myself

In [43]: %run test.py # <Tab> autocomplete also works

In [44]: knightme('John')
Hello, Sir  John

In [45]: t = Tester()
Hi

Un mix ou l'un de ces workflows devrait vous donner quelque chose de très similaire à la façon dont vous êtes habitué à travailler dans IDLE.

52
Wayne Werner

Spyder , anciennement SPyderlib/Spyder2

Assez léger, rapide et prend en charge presque tous fonctionnalités vous aurez toujours besoin de travailler avec un projet python. Il peut éditer et exécuter des fichiers .py dans une instance IPython intégrée et puis interagissez avec eux, définissez des points d'arrêt, etc.

enter image description here en taille réelle

17
user437037

Essayez Spyder, j'ai passé toute la journée à essayer de trouver un IDE qui a la fonctionnalité d'ipython et Spyder vient de le lancer hors du parc ..

La saisie semi-automatique est de premier ordre dès l'installation, pas de fichiers de configuration et toutes ces conneries, et elle a un terminal Ipython dans le coin pour que vous puissiez exécuter instantanément votre code.

grand bravo

5
lilSebastian

Jetez un oeil à DreamPie . Peut-être ce que vous cherchez.

4
Amin Abbaspour

Personnellement, j'aime PyScripter . Malheureusement, cela ne fonctionne que sur Windows, mais fonctionne également parfaitement dans Wine.

3
Hypercube

La dernière version de IdleX prend en charge IPython dans IDLE, ainsi que la magie d'édition%. Vous pouvez exécuter vos fichiers à partir de l'éditeur IDLE dans le shell IPython de nombreuses façons, soit par F5 (tout exécuter), F9 (exécuter une sélection) ou Ctrl + Entrée (exécuter un sous-code).

2
Roger

Si vous aimez le workflow sous Matlab, vous devriez probablement essayer les deux suivants:

1 , Essayez la combinaison de Spyder et Vim.

  • Modifier python dans Vim (Spyder peuvent recharger le fichier automatiquement)

  • Exécutez le code dans Spyder (dans le même interpréteur, ce qui est important pour moi):

  • Utilisez F9 pour exécuter le fichier actuel

  • Ctrl+F9 pour exécuter le bloc sélectionné

2 , Utilisez Vim + conque-Shell. ( sur google code )

  • Ouvrez votre Python interpreter Préféré dans Vim,

    par exemple, juste :ConqueTermSplit python.

  • puis visuel sélectionnez un code Python

  • appuyez sur F9 pour le coller et l'exécuter dans le Python interpreter buffer.

Remarque: quelques autres:

  • :ConqueTermVSplit python,
  • :ConqueTerm python
  • :ConqueTermVSplit rlwrap python

    Si votre interprète manque readline, vous pouvez utiliser rlwrap.

2
ying17zi

Je veux suggérer un excellent plugin pour vim qui fait une intégration bidirectionnelle entre Vim et IPython: vim-ipython.

Depuis la page du projet sur http://github.com/ivanov/vim-ipython :

En utilisant ce plugin, vous pouvez envoyer des lignes ou des fichiers entiers pour qu'IPython s'exécute, et également récupérer l'introspection d'objets et les compléments de Word dans Vim, comme ce que vous obtenez avec: objet? et objet. en IPython.

Ce plugin a une grosse limitation: il ne prend pas en charge python 3 (c'est prévu).

1
rominf

Vous pourriez aimer PySlices ...

C'est une sorte d'hybride Shell/éditeur qui vous permet d'enregistrer votre session en tant que fichiers spéciaux (à peine) modifiés python appelés fichiers .pyslice.

Il fait maintenant partie de wxPython , alors installez-le (v2.8.11 ou version ultérieure) et exécutez "python -m wx.py.PySlices" sur la ligne de commande pour le lancer.

Cela dit, je finis toujours par utiliser un éditeur externe pour les scripts (geany).

1
pyslices
Sudo apt-get install ipython

Une fois que vous avez terminé d'installer ipython.

Démarrez ipython à partir du terminal (appuyez simplement sur ipython dans le ternminal)

Courir ravi.py fichier tout ce que vous devez faire est

%run ravi.py
1
Ravi

Personnellement, j'utilise ce que @Wayne a suggéré, une combinaison de vim et ipython ...

Cependant, si vous préférez une approche différente, jetez un œil à spyder .

À partir de la dernière version (1.1), ipython devrait être entièrement intégré. Si vous téléchargez une version antérieure, les choses fonctionneront bien avec ipython en tant que shell externe, mais vous n'obtiendrez pas quelques-unes des fonctionnalités astucieuses de spyder (comme l'affichage de toutes les variables actuellement définies dans la fenêtre de l'espace de travail).

Spyder est définitivement un peu lourd, mais c'est un projet intéressant.

Un autre (très, très, nouveau) projet similaire à examiner est iep . Cela fonctionnera (en quelque sorte) avec ipython en tant que Shell, et je serais prêt à parier qu'une meilleure intégration ipython se poursuivra avant trop longtemps. En tout cas, iep est essentiellement une alternative plus légère à spyder.

Les deux sont orientés vers l'informatique scientifique, et ont donc une bonne intégration avec des choses comme matplotlib (et peuvent donc exécuter automatiquement les boucles principales de gui dans un thread séparé). Ils ne sont pas tout à fait comme des IDE "normaux" mais ils peuvent très bien remplir le créneau que vous recherchez.

0
Joe Kington

Vous pouvez utiliser le module de chargement automatique dans IPython pour recharger automatiquement le code.

Ouvert jupyter qtconsole ou jupyter console et tapez:

%load_ext autoreload
%autoreload 2
from your_work_file import *

Maintenant, chaque fois que vous enregistrez your_work_file.py, il sera automatiquement rechargé.

Astuce: si vous voulez que cela se produise automatiquement, mettez les lignes suivantes dans votre ipython_config.py fichier:

c.InteractiveShellApp.extensions = ['autoreload']         
c.InteractiveShellApp.exec_lines = ['%autoreload 2']
0
Amit Moscovich

Essayez Ptpython. Il a une bien meilleure intégration avec VIM. Vous pouvez directement éditer dans VIM en appuyant simplement sur V. Il permet également de parcourir votre historique .. vous pouvez donc à peu près du code dans le Shell, et construire progressivement votre code.

Si vous connaissez déjà ipython, vous pouvez vérifier les avantages de ptpython ici:

https://www.youtube.com/watch?v=XDgIDslyAFM

0
alpha_989