Question

Je suis amoureux de zsh depuis longtemps, et plus récemment, j'ai découvert les avantages de l'interpréteur interactif ipython sur python lui-même. Etre capable de cd , à ls , à run ou est en effet très pratique. Mais maintenant, il se sent bizarre d'avoir une telle coquille maladroite quand dans ipython, et je me demande comment je pourrais intégrer mon zsh et mon ipython mieux.

Bien sûr, je pourrais réécrire mon .zshrc et tous mes scripts en Python, et imiter la plupart de mon monde shell de ipython, mais il ne se sent pas bien. Et je ne suis évidemment pas prêt à l'emploi ipython comme une coquille principale de toute façon.

Alors, voici ma question: comment travaillez-vous efficacement entre votre shell et votre commande en boucle python? Est-ce que je manque une stratégie d'intégration évidente? Dois-je faire tout cela dans emacs?

Était-ce utile?

La solution

J'ai posé cette question sur la liste de zsh et cette réponse a fonctionné pour moi. YMMV.

Dans genutils.py après la ligne

  

sinon debug:

Supprimer la ligne:

  

stat = os.system (cmd)

Remplacez-le par:

  

stat =   subprocess.call (cmd shell = True, exécutable = '/ bin / zsh')

vous voyez, le problème est que ce « ! » appel os.system utilise pour l'exécuter, qui est par défaut manky vieux / bin / sh.

Comme je l'ai dit, il a travaillé pour moi, même si je ne suis pas sûr de ce que se est foireuse dans les coulisses.

Autres conseils

Vous pouvez exécuter des commandes shell en les commençant par un point d'exclamation et de capturer la sortie dans une variable python. Exemple: la liste des répertoires dans votre répertoire /tmp:

ipy> import os
ipy> tmplist = !find /tmp
ipy> [dir for dir in tmplist if os.path.isdir(dir)]

L'objet de la liste est un objet spécial ipython avec plusieurs méthodes utiles. Exemple: la liste des fichiers se terminant par .pdf

ipy> tmplist.grep(lambda a: a.endswith('.pdf')) # using a lambda
ipy> tmplist.grep('\.pdf$') # using a regexp

Il y a beaucoup de choses que vous pouvez faire en lisant la liste des commandes magiques:

ipy> %magic

Voir la de la documentation ipython.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top