2010-11-11 10 views
21

Así que tener un script Python:¿De alguna manera puedo "compilar" una secuencia de comandos python para trabajar en PC sin Python instalado?

myscript.py 

estoy cumpliendo de esta manera:

python D:\myscript.py 

Sin embargo, debe tener instalado Python y se incluye en la variable de entorno para PATH que para trabajar.

¿Es de alguna manera posible "agrupar" el ejecutable de Python con un script de Python para que otras personas puedan ejecutarlo en sus PC sin Python?

Está bien si funciona solo en Windows.

EDIT:

Después de probar la compile.py consigo este error:

Traceback (most recent call last): 
    File "D:\stuff\compile.py", line 4, in <module> 
    import py2exe 
ImportError: No module named py2exe 
+0

Para resolver el error de importación necesita obtener la versión correcta de 'py2exe' (32 o 64 bits según su configuración de python), instálela y además verifique que la carpeta donde está instalada esté incluida en' sys.path ' – Unode

Respuesta

17

Aquí hay una manera de hacerlo (para Windows, usando py2exe).

Primero, instale py2exe en su caja de Windows.

A continuación, crear un script en Python llamado compile.py, así:

import sys 
from distutils.core import setup 
import py2exe 

entry_point = sys.argv[1] 
sys.argv.pop() 
sys.argv.append('py2exe') 
sys.argv.append('-q') 

opts = { 
    'py2exe': { 
     'compressed': 1, 
     'optimize': 2, 
     'bundle_files': 1 
    } 
} 

setup(console=[entry_point], options=opts, zipfile=None) 

Para compilar la secuencia de comandos de Python en un ejecutable de Windows, ejecute este script con su programa como su argumento:

$ python compile.py myscript.py 

Se escupirá un ejecutable binario (EXE) con un intérprete de Python compilado dentro. Entonces puede simplemente distribuir este archivo ejecutable.

+0

Gracias. Me está dando un error sin embargo. Verifique mi respuesta actualizada. –

+0

¿instaló py2exe? –

+0

Sí. He descargado e instalado py2exe-0.6.9.win64-py2.5.amd64 desde Sourceforge. –

5

Here es una lista de ellos.

11

PyInstaller me ha funcionado bien, generando paquetes razonablemente pequeños debido a su uso de upx. Su detección de dependencia fue mejor que py2exe en ese momento también. Parece que no tiene mucho desarrollo reciente y, probablemente, no funciona con 3.x, sin embargo.

La fuente en el repositorio es un mejor punto de partida que el paquete 1.4.

Consulte también la página wiki sobre cómo trabajar con Python 2.6+.

En la lista de características:

  • Embalaje de programas Python en ejecutables estándar, que el trabajo en equipos sin instalado Python.
  • Multiplataforma: funciona en Windows (32 bits y 64 bits), Linux (32 bits y 64 bits) y Mac OS X (solo 32 bits por ahora, consulte MacOsCompatibility).
  • Multiversion: funciona bajo cualquier versión de Python desde 1.5 hasta 2.7. NOTA: si usa Python 2.6+ en Windows, consulte Python26Win.
  • Modo de embalaje flexible:
  • Directorio único: compilar un directorio que contenga un ejecutable más todos los módulos binarios externos (.dll, .pyd, .so) utilizados por el programa.
  • Archivo único: crea un único archivo ejecutable, totalmente autónomo, que se ejecuta sin ninguna dependencia externa.
  • Personalizado: puede automatizar PyInstaller para hacer el modo de empaque que desee a través de un archivo de script simple en Python.
  • Soporte inteligente explícito para muchos terceros paquetes (para importaciones ocultas, archivos de datos externos, etc.), para hacer que funcionen con PyInstaller listo para usar (consulte Paquetes admitidos).
  • Compatibilidad completa con archivos EGG de un solo archivo: los archivos .egg necesarios se inspeccionan automáticamente en busca de dependencias y se agrupan, y todas las características específicas del huevo también se admiten en tiempo de ejecución (puntos de entrada, etc.).
  • Directorio parcial Compatibilidad con EGG: directorios obligatorios .egg se inspeccionan automáticamente en busca de dependencias y se agrupan, pero las características específicas de los huevos no funcionarán en tiempo de ejecución.
  • Soporte automático para bibliotecas binarias utilizadas a través de ctypes (ver CtypesDependencySupport para más detalles).
  • Soporte para el empaquetado binario automático a través del conocido compresor UPX.
  • Modo de consola opcional (vea salida estándar y error estándar en el tiempo de ejecución).
  • Funciones específicas de Windows:
  • Compatibilidad con archivos ejecutables de firma de código.
  • Soporte totalmente automático para CRT: no es necesario distribuir manualmente MSVCR * .DLL, redistribuir instaladores, manifiestos o cualquier otra cosa; ¡verdaderas aplicaciones de un solo archivo que funcionan en todas partes!
  • Icono ejecutable seleccionable.
  • Sección de recursos de versión totalmente configurable y se manifiesta en ejecutable.
  • Soporte para construir servidores COM.
  • características específicas de Mac:
  • soporte preliminar para paquetes (ver MacOsCompatibility)
+0

He encontrado que PyInstaller es más adecuado para las últimas versiones de Python y scripts con las GUI de PyQt y varias otras bibliotecas. Solo asegúrate de tomar el último código de su SVN (sus desarrolladores no están muy interesados ​​en las versiones formales actualizadas) –

0

Ir al Bloc de notas Menú ++, Plugins -> Script Python -> Mostrar consola. En la ventana de la consola recién abierta, en la parte inferior escriba ..... execfile ('C: /path/to/your/python/file/code.py') #Use barra diagonal (/) en lugar de barra oblicua. Hit return o haz clic en el botón de ejecución.

+0

La pregunta resalta "compilar" en la pregunta por una muy buena razón. La ejecución de una herramienta con una dependencia de python cuenta como una "python instalada". Eso no es lo que la pregunta está haciendo. –

Cuestiones relacionadas