En Unix, el intérprete de Python se suele instalar como /usr/local/bin/python en aquellas máquinas donde esté disponible. En Windows, se instala en el directorio Archivos de programa. Poner este directorio en la ruta de ejecutables hace posible arrancarlo tecleando en el intérprete de órdenes la orden:
python
Como la elección del directorio donde reside el intérprete es una opción de instalación, es posible que se halle en otros lugares. Consulta con tu guru de Python local o tu administrador de sistemas (por ejemplo, /usr/local/python es una alternativa frecuente).
Teclear un carácter fin de fichero (Control-D en Unix, Control-Z en DOS o Windows) en el intérprete causa la salida del intérprete con un estado cero. Si eso no funciona, se puede salir del intérprete tecleando las siguientes órdenes: "import sys; sys.exit()".
Las opciones de edición de la línea de órdenes no son muy destacables.
En Unix, es posible que quien instalara el intérprete en tu sistema
incluyera soporte
para la biblioteca de GNU `readline', que permite una edición de línea más
elaborada y la recuperación de órdenes anteriores. El modo más rápido
de ver si hay soporte de edición de líneas es teclear Control-P en
cuanto aparece el intérprete. Si pita, la edición de líneas está
disponible (en el Apéndice A hay una introducción a las teclas de edición).
Si no sale nada o sale P
,
no está disponible la edición de líneas y sólo se puede utilizar la
tecla de borrado para borrar el último carácter tecleado.
El intérprete funciona como el intérprete de órdenes de Unix: cuando se lo llama con la entrada estándar conectada a un dispositivo tty, lee y ejecuta las órdenes interactivamente; cuando se le da un nombre de fichero como argumento o se le da un fichero como entrada estándar, lee y ejecuta un guion desde ese fichero.
Otro modo de arrancar el intérprete es "python -c orden [argumento] ...", que ejecuta las sentencias de orden, de forma análoga a la opción -c de la línea de órdenes. Como las sentencias de Python suelen contener espacios u otros caracteres que la línea de órdenes considera especiales, lo mejor es encerrar orden entre dobles comillas por completo.
Hay módulos de Python que son útiles como programas independientes. Se los puede llamar mediante "python -m módulo [arg] ...", que ejecuta el fichero de código fuente de module como si se hubiera dado el nombre completo en la línea de órdenes.
Observa que hay una diferencia entre "python fichero" y "python <fichero". En el caso de la redirección, las solicitudes de entrada del programa, tales como llamadas a input() y raw_input(), se satisfacen desde fichero. Como este fichero ya se ha leído hasta el final antes de empezar la ejecución del programa, el programa se encuentra el fin de fichero inmediatamente. En el caso del nombre de fichero como argumento, las solicitudes de entrada son satisfechas desde lo que esté conectado a la entrada estándar (esto suele ser lo deseado).
Cuando se utiliza un fichero de guion, a veces es útil ejecutar el guion y entrar en modo interactivo inmediatamente después. Esto se consigue pasando -i como argumento, antes del nombre del guion (esto no funciona si el guion se lee desde la entrada estándar, por la misma razón indicada en el párrafo anterior).
El intérprete pasa el nombre del guion y los argumentos,
si los conoce, mediante la variable
sys.argv
, que es una lista de cadenas. Su longitud es al menos
uno (cuando no hay guion y no hay argumentos, sys.argv[0]
es
una cadena vacía). Cuando se usa -m módulo, se
le da a sys.argv[0]
el nombre completo del módulo adecuado.
Cuando el guion es '-'
(es decir, la entrada
estándar), sys.argv[0]
vale '-'
. Cuando se
utiliza -c orden, sys.argv[0]
vale '-c'
. Las opciones
tras -c orden o -m módulo no las utiliza el intérprete Python, sino que
quedan en sys.argv
para uso de la orden o del módulo.
Cuando se leen órdenes desde una tty, se dice que el intérprete está en modo interactivo. En este modo, espera a la siguiente orden con el indicador principal, que suele se tres signos `mayor' (">>>" ). Para las líneas adicionales, se utiliza el indicador secundario, por omisión tres puntos ("... ").
El intérprete muestra un mensaje de bienvenida con su número de versión e información de derechos de copia, antes de mostrar el primer indicador:
python Python 1.5.2b2 (#1, Feb 28 1999, 00:02:06) [GCC 2.8.1] on sunos5 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>>
Las líneas de continuación son necesarias al introducir construcciones milti-línea. Por ejemplo, echa un vistazo a esta sentencia if:
>>> la_tierra_es_plana = 1 >>> if la_tierra_es_plana: ... print "¡Cuidado, que te caes!" ... ¡Cuidado, que te caes!
Cuando ocurre un error, el intérprete muestra un mensaje de error y una traza de la pila. En el modo interactivo, después vuelve al indicador principal. Si la entrada venía de un fichero, sale con un resultado distinto de cero tras mostrar la traza de la pila (las excepciones gestionadas con una sentencia except en una construcción try no son errores en este contexto). Existen errores no capturables que hacen que se cierre el intérprete con un resultado distinto de cero. Por ejemplo, esto ocurre con las inconsistencias internas y, en algunos casos, al quedarse sin memoria. Todos los mensajes de error se escriben en la salida de error estándar (la pantalla, si no se redirige a un fichero u otra cosa). La salida del programa se escribe en la salida estándar (que también es la pantalla, salvo en el caso mencionado antes).
Si se teclea el carácter de interrupción (suele ser Control-C o DEL) en el indicador principal o secundario se cancela la entrada y se hace volver el indicador primario2.1. Si se intenta interrumpir mientras se ejecuta una orden, se activa la excepción KeyboardInterrupt, que puede ser gestionada por una construcción try.
En sistemas Unix tipo BSD, los guiones Python se pueden hacer ejecutables directamente, como guiones de línea de órdenes, poniendo la línea
#! /usr/bin/env python
(suponiendo que el intérprete está en el PATH del usuario) al principio del guion y dándole al guion permisos de ejecución. "#!" deben ser los primeros caracteres del fichero. En algunas plataformas, esta primera línea debe terminar con un fin de línea tipo Unix ("\n"), no tipo Mac OS ("\r") ni Windows ("\r\n"). Observa que la almohadilla, "#", se utiliza para iniciar un comentario en Python.
Se le puede dar al guion un modo o permiso ejecutable, con la orden chmod:
$ chmod +x miguion.py
Se puede utilizar codificaciones distintas de ASCII en los archivos
de código fuente Python. El mejor modo es poner una línea de comentario
justo después de la línea de #!
(si no la hay, ponerla la primera)
para definir la codificación del código fuente:
# -*- coding: codificación -*-
Con esta declaración, se indica que todos los caracteres del código fuente tienen la codificación y será posible escribir directamente literales de cadena Unicode en la codificación seleccionada. La lista de codificaciones posibles se encuentra en la Referencia de las bibliotecas de Python, en la sección sobre codecs.
Por ejemplo, para escribir literales Unicode que incluyan el símbolo de la moneda Euro, se puede utilizar la codificación ISO-8859-15, en la que el símbolo del Euro tiene el ordinal 164. Este guion mostrará el valor 8364 (el ``codepoint'' Unicode correspondiente al símbolo del Euro) y terminará:
# -*- coding: iso-8859-15 -*- moneda = u"€" print ord(moneda)
Si tu editor tiene la posibilidad de guardar ficheros como UTF-8
con una marca de orden de bytes UTF-8 (también conocida como BOM),
también se podrá usar esto en lugar de una declaración de codificación. IDLE
tiene esta capacidad si se establece
Opciones/General/Codificación de la fuente predeterminada/UTF-8
.
Obsérvese que esta firma no la entienden las antiguas versiones de Python
(2.2 y anteriores), ni tampoco los sistemas operativos en el caso de guiones
con líneas #!
(sólo para los sistemas tipo Unix).
Mediante el uso de UTF-8 (bien por la firma o por la declaración de codificación), se pueden utilizar caracteres de la mayoría de los lenguajes tanto en los literales como en los comentarios. No se puede usar caracteres no ASCII en los identificadores. Para mostrar dichos caracteres adecuadamente, tu editor debe reconocer que el fichero es UTF-8, además de usar un tipo de letra que contenga los caracteres hallados en el fichero.
Al usar Python interactivamente, suele ser útil que se ejecuten algunas órdenes estándar cada vez que se arranca el intérprete. Esto se puede lograr poniendo en la variable de entorno PYTHONSTARTUP el nombre del fichero que contiene las órdenes de arranque. Es similar a la característica .profile de la línea de órdenes de Unix o al fichero autoexec.bat de MS-DOS.
Este fichero sólo se lee en sesiones interactivas, no cuando Python
lee órdenes de un guion, ni cuando se utiliza
/dev/tty como fuente explícita de órdenes (lo que hace que se
comporte como una sesión interactiva salvo en este detalle).
Estas órdenes se ejecutan en el mismo espacio nominal que las órdenes interactivas,
para que los objetos definidos o módulos importados se puedan usar sin
necesidad de prefijos en la sesión interactiva.
También se puede cambiar los indicadores principal y secundario
(sys.ps1
y sys.ps2
) usando este fichero.
Si deseas leer un archivo de arranque adicional del directorio actual puedes programarlo así en el fichero de arranque global, de este modo: "if os.path.isfile('.pythonrc.py'): execfile('.pythonrc.py')". Si deseas utilizar el fichero de arranque en un guion, debes hacerlo explícitamente dentro del guion:
import os nombreFich = os.environ.get('PYTHONSTARTUP') if nombreFich and os.path.isfile(nombreFich): execfile(nombreFich)