Saltar al contenido

IPython una breve introducción – PythonForBeginners.com

Visión general

El objetivo de este artículo es escribir una breve introducción a IPython. Si bien IPython tiene dos componentes principales (un shell de Python interactivo y una arquitectura para la computación paralela interactiva), esta publicación tratará sobre el shell de Python. Dejaré el computación paralela parte para otro momento. En el futuro también escribiré sobre “El cuaderno de IPython“, Que es un entorno interactivo basado en la web donde puede combinar la ejecución de código, texto, matemáticas, gráficos y medios enriquecidos en un solo documento. Se sabe que IPython funciona en los siguientes sistemas operativos Linux La mayoría de los demás sistemas operativos similares a Unix (AIX, Solaris, BSD, etc.) Mac OS X Windows (CygWin, XP, Vista, etc.)

¿Qué es IPython?

IPython es un shell interactivo para el lenguaje de programación Python que ofrece introspección mejorada, sintaxis de shell adicional, finalización de tabulaciones y un rico historial. fuente

¿Por qué IPython?

El shell de Python interactivo predeterminado a veces puede parecer básico. Hay una alternativa llamada “IPython” que puede instalar escribiendo apt-get install IPython (consulte la sección de instalación a continuación). Cuando esté instalado, puede iniciarlo escribiendo IPython en la terminal. IPython le da todo lo que obtiene en el básico. intérprete pero con mucho más (números de línea, edición avanzada, más funciones, funciones de ayuda, etc.)

¿Instalar IPython?

Como escribí anteriormente, si está en un sistema Ubuntu, puede instalar IPython escribiendo apt-get install IPython en su terminal. Si está en otro sistema, eche un vistazo aquí Sigamos adelante y veamos cómo se puede ver una instalación en un sistema con Mac.

# To see if I've ipython installed, I simply type "ipython" in my terminal. 

$ ipython
-bash: ipython: command not found

Entonces IPython no está instalado en mi sistema. Vamos a instalarlo

$ sudo easy_install ipython
Password:
Searching for ipython
Reading http://pypi.python.org/simple/ipython/
Reading http://ipython.scipy.org
Reading http://ipython.scipy.org/dist
Reading http://ipython.org
Reading https://github.com/ipython/ipython/downloads
Reading http://ipython.scipy.org/dist/0.8.4
Reading http://ipython.scipy.org/dist/0.9.1
Reading http://archive.ipython.org/release/0.12.1
Reading http://ipython.scipy.org/dist/old/0.9
Reading http://ipython.scipy.org/dist/0.10
Reading http://archive.ipython.org/release/0.11/
Reading http://archive.ipython.org/release/0.12
Best match: ipython 0.13.1
Downloading http://pypi.python.org/packages/2.7/i/ipython/ipython-0.13.1-py2.7.egg#md5..
Processing ipython-0.13.1-py2.7.egg
creating /Library/Python/2.7/site-packages/ipython-0.13.1-py2.7.egg
Extracting ipython-0.13.1-py2.7.egg to /Library/Python/2.7/site-packages
Adding ipython 0.13.1 to easy-install.pth file
Installing ipcontroller script to /usr/local/bin
Installing iptest script to /usr/local/bin
Installing ipcluster script to /usr/local/bin
Installing ipython script to /usr/local/bin
Installing pycolor script to /usr/local/bin
Installing iplogger script to /usr/local/bin
Installing irunner script to /usr/local/bin
Installing ipengine script to /usr/local/bin
Installed /Library/Python/2.7/site-packages/ipython-0.13.1-py2.7.egg
Processing dependencies for ipython
Finished processing dependencies for ipython

Cuando esta vez escribo IPython en mi terminal, se inicia, pero aparece un mensaje de error:

$ ipython
/Library/Python/2.7/site-packages/ipython-0.13.1-py2.7.egg/IPython/utils/rlineimpl.py:111: 
RuntimeWarning:
libedit detected - readline will not be well behaved, including but not limited to:
   * crashes on tab completion
   * incorrect history navigation
   * corrupting long-lines
   * failure to wrap or indent lines properly
It is highly recommended that you install readline, which is easy_installable:
     easy_install readline
Note that `pip install readline` generally DOES NOT WORK, because
it installs to site-packages, which come *after* lib-dynload in sys.path,
where readline is located.  It must be `easy_install readline`, or to a custom
location on your PYTHONPATH (even --user comes after lib-dyload).

Para resolver eso, simplemente escriba easy_install readline (como también se indica arriba)

$sudo easy_install readline
Searching for readline
Reading http://pypi.python.org/simple/readline/
Reading http://github.com/ludwigschwardt/python-readline
Reading http://www.python.org/
Best match: readline 6.2.4.1
Downloading http://pypi.python.org/packages/2.7/r/readline/readline-6.2.4.1-py2.7-macosx..
Processing readline-6.2.4.1-py2.7-macosx-10.7-intel.egg
creating /Library/Python/2.7/site-packages/readline-6.2.4.1-py2.7-macosx-10.7-intel.egg
Extracting readline-6.2.4.1-py2.7-macosx-10.7-intel.egg to /Library/Python/2.7/site-packages
Adding readline 6.2.4.1 to easy-install.pth file

Installed /Library/Python/2.7/site-packages/readline-6.2.4.1-py2.7-macosx-10.7-intel.egg
Processing dependencies for readline
Finished processing dependencies for readline

Con readline instalado, todo debería estar bien.

$ ipython
Python 2.7.2 (default, Jun 20 2012, 16:23:33)
Type "copyright", "credits" or "license" for more information.

IPython 0.13.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', use 'object??' for extra details.

In [1]:

IPython ahora está instalado en su sistema.

Iniciar IPython

Comienzas IPython escribiendo “ipython”En su terminal.

$ ipython
Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
Type "copyright", "credits" or "license" for more information.

IPython 0.13.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', use 'object??' for extra details.

Ejecutar código Python desde un archivo

El flujo de trabajo básico en IPython es que usa el editor de texto para editar su código. Guarda el archivo y lo carga en IPython. Si desea probar el código de forma interactiva, use% run -i, de lo contrario, puede usar% run. Si algo sale mal, simplemente regrese al editor de texto, corrija el error, guarde y salga. Luego regrese a IPython y ejecute el archivo nuevamente. Para ejecutar código Python que ha guardado en un archivo (ejemplo hello.py), usa el comando %correr (en nuestro caso% run hello.py). IPython buscará ese archivo en la carpeta actual. Puede enumerar el contenido de los archivos en su carpeta actual con el comando ls. El código en hello.py se ejecutará, pero las funciones en él no estarán disponibles para llamadas interactivas. Si desea probar el código de forma interactiva, deberá agregar el modificador -i cuando use% run. El comando para ejecutarlo de forma interactiva es % run -i hola.py

Finalización de tabulación

La finalización de tabulaciones, especialmente para los atributos, es una forma conveniente de explorar la estructura de cualquier objeto con el que esté tratando. fuente Para utilizar la finalización, escriba un patrón que le gustaría que coincida con el shell, seguido de la tecla Tab. Simplemente escriba object_name. para ver los atributos del objeto Además de los objetos y las palabras clave de Python, la finalización de tabulación también funciona en los nombres de archivos y directorios.

In [1]: from sys import std
stderr  stdin   stdout

In [1]: from urllib2 import url
url2pathname  urlopen       urlparse

Macros

Las macros de IPython son excelentes para ejecutar el mismo código una y otra vez. Las macros permiten a un usuario asociar un nombre con una sección del código Python para que el código se pueda ejecutar más tarde haciendo referencia al nombre. Son editables mediante el comando mágico ‘% edit’

Usando el depurador de Python (pdb)

El depurador de Python (pdb) es un depurador interactivo potente que le permite recorrer el código, establecer puntos de interrupción, observar variables, etc. Con las llamadas pdb automáticas habilitadas, el depurador de Python se iniciará automáticamente cuando Python encuentre una excepción no controlada. La línea actual en el depurador será la línea de código en la que ocurrió la excepción. Si inicia IPython con la opción –pdb, puede llamar al depurador pdb de Python cada vez que su código desencadena una excepción no detectada. Esta función también se puede alternar en cualquier momento con el comando mágico% pdb. fuente

Perfiles

Un perfil es un directorio que contiene archivos de configuración y tiempo de ejecución, como registros, información de conexión para las aplicaciones paralelas y su historial de comandos de IPython. Los perfiles facilitan el mantenimiento de archivos de configuración, registros e historiales separados para proyectos específicos. Los perfiles se pueden crear fácilmente con el siguiente comando. $ ipython profile crear nombre_perfil Esto agrega un directorio llamado profile_name a su directorio IPython. Luego puede cargar este perfil agregando –profile = a sus opciones de línea de comando. Los perfiles son compatibles con todas las aplicaciones de IPython. Este comando debe crear e imprimir la ruta donde está configurado el perfil. Para usar el perfil, simplemente especifique el perfil como argumento para ipython. $ ipython –profile = nombre_perfil IPython se envía con algunos perfiles de muestra en IPython / config / profile.

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.

Archivos de inicio

En el directorio profile_ / startup puede colocar cualquier archivo python (.py) o IPython (.ipy) que desee ejecutar tan pronto como se inicie IPython. Lo único que está actualmente en mi directorio profile_default / startup es un archivo README. El contenido de ese archivo debe tener un aspecto similar a este ”Este es el directorio de inicio de IPython. Los archivos .py y .ipy en este directorio se ejecutarán * antes * de cualquier código o archivo especificado a través de los configurables exec_lines o exec_files siempre que cargue este perfil. Los archivos se ejecutarán en orden lexicográfico, por lo que puede controlar el orden de ejecución de los archivos con un prefijo, por ejemplo: 00-first.py 50-middle.py 99-last.ipy ”OK. Genial, probemos esto. Crea un nuevo archivo en tu editor:

$ vim calc.py

# This is a small python script calculating numbers

a = 1 + 1

b = 2 * 2

c = 10 / 2

d = 10 - 5

print a,b,c,d

Salga del editor e inicie IPython

$ ipython 
Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
Type "copyright", "credits" or "license" for more information.

IPython 0.13.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', use 'object??' for extra details.
3

>>> 2 4 5 5

In [1]: %run calc.py
2 4 5 5

Todo en los archivos de inicio se puede usar sin volver a escribirlos cada vez que vuelva a ingresar a IPython.

Comandos en IPython

Los comandos “mágicos” de IPython están precedidos convencionalmente por%, pero si el indicador% automagic está activado (que es el valor predeterminado), entonces se pueden llamar comandos mágicos sin el% anterior. IPython comprueba si el comando que escribió con su lista de palabras clave mágicas. Si el comando es una palabra clave mágica, IPython sabe qué hacer con él. Si no es una palabra clave mágica, le permite a Python averiguar qué hacer con ella.

lsmagic

enumera todos los comandos incorporados, llamados comandos mágicos. Estos tienen el prefijo% para diferenciar entre variables si tienen el mismo nombre.

#In [57]: lsmagic

Available line magics:
%alias  %alias_magic  %autocall  %autoindent  %automagic  %bookmark  %cd  %colors  %config
%cpaste  %debug  %dhist  %dirs  %doctest_mode  %ed  %edit  %env  %gui  %hist  %history
%install_default_config  %install_ext  %install_profiles  %killbgscripts  %load  %load_ext
%loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %lsmagic  %macro  %magic
%notebook  %page  %paste  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %popd
%pprint  %precision %profile  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab
%quickref  %recall  %rehashx %reload_ext  %rep  %rerun  %reset  %reset_selective  %run
%save  %sc  %store  %sx  %system  %tb %time  %timeit  %unalias  %unload_ext  %who  %who_ls 
%whos  %xdel  %xmode

Available cell magics:
%%!  %%bash  %%capture  %%file  %%perl  %%prun  %%ruby  %%script  %%sh  %%sx  %%system
%%timeit

Automagic is ON, % prefix IS NOT needed for line magics.
Comandos de ayuda

% quickref muestra qué comandos “mágicos” están disponibles en IPython. Si escribe% quickref dentro de IPython, verá la Tarjeta de referencia rápida, que contiene mucha ayuda útil. IPython – Un Python interactivo mejorado – Tarjeta de referencia rápida ====================================== ======================== El “?” es muy útil. Si escribe? después de un len ?, verá la documentación sobre la función len. Mecanografía ? después de un nombre le dará información sobre el objeto adjunto a ese nombre,

>>>len?

Type:       builtin_function_or_method
String Form:
Namespace:  Python builtin
Docstring:
len(object) -> integer

Return the number of items of a sequence or mapping.

>>>str?

Type:       type
String Form:<type 'str'="">
Namespace:  Python builtin
Docstring:
str(object) -> string

Return a nice string representation of the object.

If the argument is a string, the return value is the same object.
Más comandos

%Reiniciar restablece el entorno interactivo % hist le permite ver cualquier parte de su historial de entrada % hist -g alguna cadena Busque (‘grep’) a través de su historial escribiendo [55]: hist -g matemáticas 19: importar matemáticas 55: hist -g matemáticas %pegar use texto que tenga en el portapapeles, por ejemplo, si ha copiado código con Ctrl + C. El comando limpia ciertos caracteres e intenta averiguar cómo se debe formatear el código. %editar El comando% edit (y su alias% ed) invocará el editor configurado en su entorno como EDITOR. %quién Esta función enumera los objetos, funciones, etc. que se han agregado en el espacio de nombres actual, así como los módulos que se han importado. En [50]: who El espacio de nombres interactivo está vacío.

In [51]: import sys

In [52]: import os

In [53]: who
os  sys 

Acceso al shell del sistema

Cualquier línea de entrada que comience con un! El carácter se pasa literalmente (¡menos el!) al sistema operativo subyacente. Por ejemplo, al escribir! Ls se ejecutará ‘ls’ en el directorio actual. Para ejecutar cualquier comando en el shell del sistema:

In [2]: !ping www.google.com

PING www.google.com (173.194.67.104): 56 data bytes
64 bytes from 173.194.67.104: icmp_seq=0 ttl=49 time=6.096 ms
64 bytes from 173.194.67.104: icmp_seq=1 ttl=49 time=5.963 ms
^C

Puede capturar la salida en una lista de Python, por ejemplo: files =! Ls.

Alias

IPython viene con algunos alias predefinidos. Todo su $ PATH se ha cargado como alias de IPython, por lo que debería poder escribir cualquier comando normal del sistema y ejecutarlo. En [1]:% alias Número total de alias: 16 fuera[1]: (‘lk’, ‘ls -F -l% l | grep ^ l’), (‘ll’, ‘ls -F -l’), (‘ls’, ‘ls -F’),… A más La documentación completa se puede encontrar aquí: http://ipython.org/ipython-doc/stable/interactive/tutorial.html http://wiki.ipython.org/index.php?title=Cookbook

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.