(Solucionado) Problema con Py2Exe en Windows

Iniciado por Eleкtro, 8 Febrero 2012, 14:13 PM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

Estoy siguiende este tutorial

http://bytes.com/topic/python/insights/580045-simple-guide-using-py2exe

Por un lado tengo un script

Y un setup.py:

Código (python) [Seleccionar]
#!/usr/bin/env python
from distutils.core import setup
import py2exe
   
setup(
   console=["d.py"],
   zipfile=None
    )


El problema es que no puedo usar la opcion "--bundle" porque me da un error sobre windows de 64 bit

Código (python) [Seleccionar]
python setup.py py2exe --bundle 1
running py2exe
error: bundle-files 1 not yet supported on win64



Así que he usado este comando:

Código (python) [Seleccionar]
python setup.py py2exe

Ya me ha compilado el exe, Pero ahora hay otro problema, no me funciona!
Primero me pide el archivo "python27.dll", Así que lo coloco en la misma carpeta que el archivo.exe, pero los errores continuan:

Código (DOS) [Seleccionar]
C:\Users\Administrador\Desktop>test.exe google.com
Traceback (most recent call last):
 File "d.py", line 3, in <module>
 File "urllib.pyc", line 26, in <module>
 File "socket.pyc", line 47, in <module>
 File "_socket.pyc", line 12, in <module>
 File "_socket.pyc", line 10, in __load
ImportError: DLL load failed: No se puede encontrar el m¾dulo especificado.


¿Alguna ayuda?








Jirp96

Hola!
Si recien comienzas tal vez no sea buena idea ir desde el principio con py2exe....
Aunque todavia no se usar py2exe, el error parece que es porque no puede encontrar algunos modulos.
Tal vez esto te pueda servir(usan la opcion include de py2exe para incluir modulos en el archivo setup.py) o este tutorial.
Espero te sirva!
Saludos!
pd: Digo esto, porque el script de la guia que seguiste no incluye ningun modulo, y el que tu intentas compilar si, asi que lo mas probable es que haya que agregar alguna opcion mas(como la include del primer enlace que puse)

Eleкtro

#2
Cita de: Jirp96 en  8 Febrero 2012, 14:27 PM
Si recien comienzas tal vez no sea buena idea ir desde el principio con py2exe....

Hombre, Si lo ves desde mi punto de vista, El py2exe solamente es una aplicación commandline, y python es un lenguaje, Quiero decir, Que lo primero debería resultarme más facil

De todas formas si me he precipitado por lo que comentas de los módulos, y el "setup.py" me costará sin conocimientos...

a ver si saco algo en claro de esos links

saludos


EDITO:


Bien!

Ha sido muy fácil

Simplemente he tenido que añadir dos lineas "import" en el setup.py para importar los módulos que usa el otro script:

Código (python) [Seleccionar]
#!/usr/bin/env python
from distutils.core import setup
import py2exe
import sys
import re

setup(
   console=["d.py"],
   zipfile=None
    )


En realidad no estoy muy seguro pero creo que eso es lo que me lo ha solucionado xD

Bueno, ahora sí, me dedicaré al lenguaje, y no a compilar python

gracias








Eleкtro

#3
Hola, ha pasado un tiempo desde que tube este problema, Y lo solucioné, Pero ahora no se porqué ya no me funciona el py2exe...

He reinstalado python 2.7 (x64) desde cero, he instalado el py2exe x64 la última version oficial

Intento compilar este script:

Código (python) [Seleccionar]
print "hola"

Con este setup.py:

Código (python) [Seleccionar]
from distutils.core import setup
import py2exe
   
setup(console=["HelloWorld.py"])


(Como veis, debería funcionar...)

Pero no me funciona...

¿Alguna ayuda?

PD: Tengo instalado Microsoft Visual C++ 2008 Redistributable Package tanto el paquete x64 como el x86...

No se de que manera podría utilizar el "dependency walker" (Que .exe debo abrir?) para averiguar que dll se supone que falta...

Mi SO es Win7 x64, Por si sirve de ayuda... Y El error es este:

Cita de: La ***** de py2execreating python loader for extension 'bz2' (C:\Python27\DLLs\bz2.pyd -> bz2.pyd)

*** finding dlls needed ***
Traceback (most recent call last):
 File "setup.py", line 7, in <module>
   setup(console=["HelloWorld.py"])
 File "C:\Python27\lib\distutils\core.py", line 152, in setup
   dist.run_commands()
 File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
   self.run_command(cmd)
 File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
   cmd_obj.run()
 File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 243, in run
   self._run()
 File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 305, in _run
   dlls = self.find_dlls(extensions)
 File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 389, in find_dl
ls
   self.dll_excludes)
 File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 1021, in find_d
ependend_dlls
   import py2exe_util
ImportError: DLL load failed: No se puede encontrar el m¾dulo especificado.








Eleкtro

Bueh...

Ya no importa, He encontrado algo muchisimo mejor y con mejor compatibilidad en x64

cx_Freeze

http://cx-freeze.sourceforge.net/cx_Freeze.html

Saludos!