2010-08-15 24 views
5

Una persona (una persona de la tercera edad que está aprendiendo los principios básicos de las computadoras) me pidió que haga un programa que le ahorrará MUCHA cantidad de tiempo con un tipo de tarea de trabajo duro. Hice la secuencia de comandos en Python, es simple, línea de comandos, toma la entrada del usuario y guarda la salida en un archivo y eso es todo.¿Cómo 'empaquetar' un simple script de python de un solo archivo para una persona que quiere pagar?

Mi primera pregunta está relacionada con el resultado del script: No tiene que ser GUI (no tengo experiencia en GUI dev y actualmente no tengo tiempo), pero también creo que no debería ser así simplista como un archivo TXT, ya que el resultado será de más de 40,000 líneas y destinado a la impresión (sé que es un desperdicio de papel y luché mucho para que no lo hiciera, pero es su elección). ¿A qué formato de archivo debería dar salida? Tal vez un archivo HTML?

A continuación, me pidió que lo quemara en un CD para que lo pueda abrir en su computadora portátil y ejecutarlo directamente y guardar la salida en 'C:'. Por la naturaleza de su capacidad de computación, tiene que ser lo más simple posible y requerir el menor 'servicio después'. No hay restricciones con respecto al tamaño que ocupa todo el programa en su computadora.

Intenté crear un EXE de mi secuencia de comandos de Python con PY2EXE pero cuando ejecuto .EXE, crea el archivo de salida en la misma carpeta, no abre 'ventana', no solicita entrada y se ejecuta FOREVER, con el tamaño del archivo de salida aumenta en 20mb/s! Por supuesto, cuando lo ejecuto en python normal, funciona perfectamente bien. Miré otros subprocesos de stackoverflow y seguí el parámetro 'bundle_files': 1 pero todavía ... Estoy usando Python2.7, ¿debería probar PyInstaller? En caso afirmativo, ¿podría la gente señalarme un buen tutorial?

Gracias de antemano

+0

Acabo de enterarme del error con mi PY2EXE. El error involucraba raw_input que me estaba dando EOFError. Esto se debe a que hice el ejecutable como una aplicación de Windows y no como una consola. raw_input requiere std que aparentemente funciona con consola y no con windows. – chiurox

Respuesta

6

Hay un buen tutorial PyInstaller here. Sin embargo, PyInstaller no (todavía) admite Python 2.7 (de hecho, en Windows, creo que también hay problemas con 2.6).

En su caso de uso recomendaría PortablePython - Python configurado para ejecutarse (en Windows) desde una llave USB. Puede poner fácilmente la llave USB Python en la versión "portátil", su secuencia de comandos, y un .bat que ejecuta su secuencia de comandos. Sin embargo, PortablePythontambién aún no es compatible con Python 2.7 (2.6, claro, no hay problema).

Si vive en el borde de la hemorragia - haciendo que el pago por el trabajo en un lanzamiento que ha estado en marcha durante tan poco tiempo, que no tiene un subrelease .1 todavía ;-) - no es sorprendente que avanzado tercero Las herramientas de partes como los empaquetadores aún no te respaldan por completo. ¿Qué características 2.7 (que no se encuentran en 2.6) está utilizando, para valer esta molestia para usted?

+0

Oh, tienes un punto. De hecho, no necesito 2.7 características en total, especialmente porque nunca programé en Python hasta hace solo dos semanas. Acabo de aceptar hacer este pequeño proyecto como una oportunidad de aprender algo de Python y cobrarme por ello;) Básicamente, estoy confiando en muchas funciones de itertools, que no requieren 2.7, ¿verdad? ¿Debería instalar 2.5 entonces? PortablePython parece interesante, ¿funcionará si se ejecuta en un CD? ¿O solo medios grabables como pendrive? – chiurox

+0

@chiurox, 2.6 y PortablePython es lo que sugeriría: seguramente sería tan fácil para su cliente insertar una unidad USB en un puerto USB, como pegar un CD en su lector (y las unidades USB pequeñas son tan baratas) estos días que puedes permitirte darle uno gratis ;-).No sé si funcionaría en un medio r-o (aunque es fácil de probar). 2.6 es maduro, sólido y bien vale la pena usar más de 2.5, a menos que sea absolutamente necesario tener este último. 'itertools' está en todas las versiones desde 2.3, pero mejor y más rico en 2.6 (media docena de nuevas funciones y características wrt 2.5). –

Cuestiones relacionadas