2011-12-13 7 views
13

Vorrei aggiungere alcune opzioni della riga di comando a un codice di avvio Python per poter effettivamente richiamare una shell ipython. Come lo faccio?Come posso avviare ipython dalla shell, eseguendo 'python ...'?

+10

Potresti spiegare il tuo problema * reale *? Voglio dire, quale vero problema dovrebbe risolvere questo hack? –

+0

Uso un IDE che ha un supporto limitato per una shell interattiva per l'esecuzione degli script in (pycharm), e mi piacerebbe poter eseguire gli script in un modo più interattivo, come in IEP. – Shwouchk

+0

La correzione dovrebbe funzionare anche negli ambienti Windows – Shwouchk

risposta

21

Per iniziare IPython guscio direttamente in Python:

from IPython import embed 

a = "I will be accessible in IPython shell!" 

embed() 

Oppure, per eseguire semplicemente da linea di comando:

$ python -c "from IPython import embed; embed()" 

embed utilizzerà tutte le variabili locali all'interno della shell.

Se si desidera fornire i locali personalizzati (variabili accessibili in guscio) dare un'occhiata a IPython.terminal.embed.InteractiveShellEmbed

+0

Non uso più quell'ambiente o il sistema operativo, ma penso che avrebbe funzionato. Grazie! – Shwouchk

2

Non è del tutto chiaro cosa intendi con "un codice di avvio Python"; Presumo che questo si riferisca al codice shell che usi per lanciare Python.

Su Unix, è possibile utilizzare alias di sostituire un comando per un altro:

[email protected]:~$ alias python=ipython 
[email protected]:~$ python 
Enthought Python Distribution -- http://www.enthought.com 

Python 2.7.1 |EPD 7.0-2 (64-bit)| (r271:86832, Nov 29 2010, 13:51:37) 
Type "copyright", "credits" or "license" for more information. 

IPython 0.10.1 -- An enhanced Interactive Python. 
?   -> Introduction and overview of IPython's features. 
%quickref -> Quick reference. 
help  -> Python's own help system. 
object? -> Details about 'object'. ?object also works, ?? prints more. 

In [1]: 

Se questo non è ciò che si vuole, si prega di chiarire la tua domanda.

+0

Grazie, ma ho bisogno che funzioni su Windows ... – Shwouchk

6

Per fare esattamente quello che hai chiesto, cioè aggiungere opzioni della riga di comando per un python invocazione per invocare realtà IPython, si può fare questo:

python -c 'import subprocess; subprocess.call("ipython")' 

Non riesco a immaginare, però, nessun caso in cui questo sarebbe utile

+0

Correggetemi se ho torto, ma in questo modo qualsiasi comando è passato e il file di script sarà corro ancora in python e non in ipython, giusto? – Shwouchk

+0

@Shwouchk: la tua domanda originale ha fornito pochissime informazioni - questa risposta è stata la migliore ipotesi che potrei dare. Dai commenti alla tua domanda iniziale, penserei che questa soluzione non ti aiuterà, ma che ne dici di provarci? –

+0

In questo modo ho risolto un problema correlato per me che eseguivo ipython da un prompt di emacs, che altrimenti non avrei potuto scaricare correttamente l'output nel buffer emacs. – flatline

1

Credo che si intende qualcosa di simile python C:\Python27\Scripts\ipython-script.py

2

Forse un'opzione è solo per incorporare ipython nel codice come questo

def some_function(): 
    some code 

    import Ipython 
    Ipython.embed() 

Quando si esegue il funzione in qualche codice che verrà lanciato e terminale ipython il cui ambito è quello della funzione da cui è stato chiamato.

Problemi correlati