2011-12-13 25 views
13

Me gustaría agregar algunas opciones de línea de comandos a un código de inicio de python para invocar realmente un shell ipython. ¿Cómo puedo hacer eso?¿Cómo puedo lanzar ipython desde el shell, ejecutando 'python ...'?

+10

¿Podría explicarnos su problema * real *? Quiero decir, ¿qué problema real se supone que debe resolver este truco? –

+0

Utilizo un IDE que tiene un soporte limitado para un shell interactivo para ejecutar sus scripts en (pycharm), y me gustaría poder ejecutar los scripts de una manera más interactiva, como en el IEP. – Shwouchk

+0

La corrección también debería funcionar en entornos de Windows – Shwouchk

Respuesta

21

Para iniciar IPython cáscara directamente en Python:

from IPython import embed 

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

embed() 

O, simplemente ejecutarlo desde la línea de comandos:

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

embed usará todas las variables locales dentro del shell.

Si desea proporcionar los locales personalizados (variables accesibles con cáscara) echar un vistazo a IPython.terminal.embed.InteractiveShellEmbed

+0

Ya no estoy usando ese entorno o sistema operativo, pero creo que esto hubiera funcionado. ¡Gracias! – Shwouchk

2

No está del todo claro qué quiere decir con "un código de lanzamiento de Python"; Supongo que esto se refiere al código del shell que usas para iniciar Python.

En Unix, puede utilizar alias sustituir un comando para otro:

[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]: 

Si esto no es lo que desea, por favor aclarar su pregunta.

+0

Gracias, pero necesito que esto funcione en Windows ... – Shwouchk

6

Para hacer exactamente lo que usted pidió, es decir, añadir opciones de línea de comandos para una invocación a python realidad invocar IPython, usted puede hacer esto:

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

No me puedo imaginar, sin embargo, cualquier circunstancia en que esta sería útil.

+0

Corrígeme si me equivoco, pero de esta manera todos los comandos pasan y el archivo de script lo hará Todavía se ejecuta en Python y no en ipython, ¿verdad? – Shwouchk

+0

@Shwouchk: su pregunta original proporcionó muy poca información; esta fue la mejor suposición que pude dar. De los comentarios a su pregunta original, creo que esta solución no lo ayudará, pero ¿qué tal si lo intentamos? –

+0

Esto en realidad me solucionó un problema relacionado al ejecutar ipython desde un indicador de emacs, que de otra manera no podría obtener para descargar correctamente el resultado al buffer de emacs. – flatline

1

Creo que significa algo así como python C:\Python27\Scripts\ipython-script.py

2

Tal vez una opción es sólo para incrustar ipython en su código como este

def some_function(): 
    some code 

    import Ipython 
    Ipython.embed() 

Al ejecutar el función en algún código que se iniciará y ipython terminal cuyo alcance es el de la función desde donde fue llamado.

Cuestiones relacionadas