2010-04-20 34 views
18

Necesito ejecutar una secuencia de comandos de Python en una máquina que no tiene instalado Python. Utilizo Python como parte de un paquete de software, y Python se ejecuta detrás de la cortina sin que el usuario lo note.Instalar Python 2.6 sin usar el instalador en Win32

Lo que hice fue lo siguiente.

  1. Copia python.exe, python26.dll, msvcr90.dll y Microsoft.VC90.CRT.manifest
  2. comprimir todo el directorio en el directorio de LIBs como el python26.zip
  3. Copiar todo el DLL necesario/archivos pyd dentro del directorio DLL.

Parece que funciona, pero cuando cambio Python26.zip por otro nombre como pythonlib.zip, ya no puede encontrar la biblioteca de Python.

  • Pregunta 1: ¿Cuál es la magia detrás del nombre python26.zip? Python encuentra automáticamente una biblioteca dentro de un python26.zip, pero no con un nombre diferente?
  • Pregunta 2: Si tengo python26.zip en el mismo directorio donde está python.exe/python26.dll, no es necesario que agregue la ruta sys.path.append (THE PATH TO python26.zip). ¿Es correcto?

Python tiene bibliotecas incorporadas, y sys es una de ellas. Pensé que podría usar sys.path para señalar cualquier biblioteca de Python en el archivo ZIP que necesitaba. Pero, sorprendentemente, si utilizo el nombre de la biblioteca como Python26.zip, simplemente funcionó. ¿Por qué esto es tan?

+2

¿No tiene privilegios de administrador? –

+2

Tenga cuidado con la instalación manual de Python. Probablemente lo ejecutará bien, pero la instalación de bibliotecas adicionales es un gran dolor en la parte posterior. – ktdrv

+1

¿puedes simplemente empaquetar tu aplicación usando py2exe? (incluirá una copia del intérprete dentro de un exe) –

Respuesta

10

Miré en el código fuente del intérprete de Python, e hice algunos experimentos. Y descubrí que el intérprete de Python antepone el "EL DIRECTORIO DE PYTHONXXX.DLL + pythonXXX.zip" pase lo que pase. XXX es la versión del intérprete de Python.

Como resultado, si hay una python26.zip en el mismo directorio que python26.dll. Podría usar toda la biblioteca de Python automáticamente.

26

He estado utilizando PortablePython desde hace un año, y me parece genial ya que está trabajando en mi cuaderno de trabajo bloqueado.

Hay una versión de Python 2.5.4, 2.6.1 y una 3.0.1.

+1

No había oído hablar antes de PortablePython. Gran consejo. – Frederik

+0

puede agregar módulos adicionales al USB que contiene PP, por lo que no hay nada que le impida usar eso sobre la copia que está haciendo ahora – PPTim

+0

Los usuarios de ummmm pueden ser bastante indiferentes a lo que sucede a su alrededor, pero ¿no notarían la unidad USB ? –

2

py2exe le permitirá compilar su secuencia de comandos de Python en un ejecutable de Windows. Puede funcionar o no mejor que PortablePython, pero tal vez podría ser un poco más claro con respecto a la cantidad de archivos que necesita distribuir para su programa "detrás de la cortina".

3

Otra opción podría ser considerar PyInstaller que creará aplicaciones de Python independientes multiplataforma. Desde la página principal:

PyInstaller es un programa que convierte (paquetes) programas de Python en ejecutables independientes, bajo Windows, Linux y Mac OS X. [...] El objetivo principal de PyInstaller es ser compatible con paquetes de terceros listos para usar. Esto significa que, con PyInstaller, todos los trucos necesarios para hacer que los paquetes externos funcionen ya están integrados dentro del PyInstaller, de modo que no se requiere la intervención del usuario. Nunca se le pedirá que busque trucos en wikis y aplique modificaciones personalizadas a sus archivos o scripts de configuración. Como ejemplo, las bibliotecas como PyQt y Matplotlib son totalmente compatibles, sin tener que manejar complementos o archivos de datos externos manualmente. Consulte nuestra lista de compatibilidad de SupportedPackages.

+0

PyInstaller no es compatible con Windows con Python2.6. Es un bloqueador para mí y puede ser para otros también. http://www.pyinstaller.org/wiki/Python26Win – blokeley

5

Otra opción es instalar WinPython. Utiliza un instalador, pero no requiere derechos de administrador (probado en Windows 7). A diferencia de Portable Python, incluso tiene una versión de Python 3.3.5.

10

De Sylvain Pointeau's blog:

El procedimiento es realmente muy simple, sólo tiene que descargar el instalador MSI desde http://www.python.org/getit/ y escriba el comando:

C:\development\apps>msiexec /a python-3.3.2.msi /qb TARGETDIR=C:\development\apps\python33

Su ejemplo utiliza msiexec (aka Instalador administrativo de MSI para usted personas UniExtract) para forzar un extracto a TARGETDIR. Notará que allí es un instalador interno que usted elimina.

EDITAR: También puedes silenciarlo, pero hacer esto cada vez que quieras usar python parece tonto. Simplemente extraiga a un tempdir y luego limpie cuando lo desinstalen.

PD: ¡No vi la edad que tenía! : D

+1

Tuve que hacer algo similar recientemente con 2.7.11. Además, deberá instalar pip manualmente (utilizando el script 'get-pip.py'). – Erik