Artículo original: A Python Launcher For Windows
Mark Hammond (autor de pywin32 y mantenedor de Python para Windows desde hace tiempo) ha escrito PEP 397, que describe un nuevo lanzador de Python para Windows. Vinay Sanjip (autor del módulo logging de la biblioteca estándar) ha creado recientemente una implementación del lanzador. Se puede descargar desde https://bitbucket.org/vinay.sajip/pylauncher/downloads
El lanzador permite que los guiones Python (ficheros .py y .pyw) en Windows especifiquen la versión de Python que debe ser usada, permitiendo el uso simultáneo de Python 2 y 3.
Los usuarios de Windows deberían considerar descargar el lanzador y probarlo para ayudar a los desarrolladores de Python a rematar cualquier cuestión pendiente. El lanzador está empaquetado como aplicación independiente y soportará las versiones de Python disponibles actualmente. La intención, una vez haya finalizado el desarrollo del lanzador, es incluirlo como parte de Python 3.3 (aunque seguirá disponible como aplicación independiente para usuarios de versiones anteriores).
Hay disponibles dos versiones del lanzador - launcher.msi que se instala en el directorio Archivos de programa, y launchsys.msi que se instala en el directorio System32 de Windows. (Hay versiones de 64 bits para versiones de Windows de 64 bits).
Algunos detalles acerca del lanzador
La especificación completa del comportamiento del lanzador se encuentra el PEP 397. Un resumen de los principios básicos:
- El lanzador incluye dos ejecutables - py.exe (la versión consola) y pyw.exe (la versión GUI).
- El lanzador se registra como gestor para las extensiones de fichero .py (consola) y .pyw (GUI).
- Cuando se ejecuta un guión, el lanzador buscará una línea #! (shebang) al estilo Unix en el guión. El lanzador reconoce los siguientes nombres de ejecutables: python (python del sistema por defecto), python2 (versión por defecto de Python 2) y python3 (versión por defecto de Python 3). Los detalles exactos se pueden personalizar fácilmente por usuario o por máquina.
- Cuando se usa de forma independiente, el comando py.exe lanza el intérprete interactivo de Python. Se pueden especificar opciones en la línea de comandos, de forma que py -2 lanza Python 2, py -3 lanza Python 3, y py la la versión por defecto.
Instrucciones de uso sencillas
Cuando se ha instalado, el lanzador se asocia a si mismo con los guiones .py y .pyw. Si no haces nada más, los guiones serán ejecutados usando el intérprete de Python por defecto de la maquina, por lo que no verás ningún cambio. Algo que quizás quieras hacer, si usas mucho la consola, es añadir .py a tu variable PATHEXT para que los guiones no se ejecuten en una consola independiente.
Para especificar que un guión tiene que usar Python 2, simplemente haz que:
#!/usr/bin/env python2
sea la primera línea del guión. (Esto es un formato compatible con Unix. Si no necesitas compatibilidad con Unix, utiliza #!python2).
Por otro lado, si quieres especificar que un guión tiene que usar Python 3, haz que:
#!/usr/bin/env python3
sea la primera línea.
También puedes iniciar el intérprete Python usando cualquiera de los siguientes comandos:
# Versión por defecto de Python py # Python 2 py -2 # Python 3 py -3
Para que esto funcione el ejecutable py.exe tiene que estar en tu ruta. Esto se configura de forma automática con la versión launchsys del instalador, pero con launcher.msi el directorio de instalación (C:\Archivos de programa\Python Launcher) debe ser añadido manualmente a PATH.
Más información
Los siguientes hilos de correos en python-dev cubren algunas de las discusiones clave:
- Anuncio inicial de Mark del borrador PEP: http://mail.python.org/pipermail/python-dev/2011-March/109509.html
- El segundo borrador del PEP: http://mail.python.org/pipermail/python-dev/2011-March/109786.html
- Cuestión inicial de Vinay sobre una implementación en C del lanzador: http://mail.python.org/pipermail/python-dev/2011-June/112145.html
- Anuncio de Vinay de su implementación en C: http://mail.python.org/pipermail/python-dev/2011-July/112184.html
- Llamamiento de Vinay para probadores: http://mail.python.org/pipermail/python-dev/2011-July/112251.html