2011-03-21 26 views
8

Creé con éxito una versión ejecutable (Py2exe, Pyinstaller) de mi aplicación. Cuando trato de ejecutar la aplicación desde .exe, me sale un error de la siguiente manera en el archivo de registro:ImportError: no se puede importar el nombre Publisher

Traceback (most recent call last): File "CreateAS.pyw", line 8, in <module> ImportError: cannot import name Publisher

estoy realmente atascado en esta parte. ¿Podrías ayudarme?

Gracias

+2

La excepción [NoSectionError] (http://docs.python.org/library/configparser.html#ConfigParser.NoSectionError) se genera cuando no se encuentra una sección. ¿Has confirmado que tienes una sección llamada 'ubicaciones'? – user225312

+0

He resuelto este problema al integrar el código relacionado con la pulpa en mi módulo .pyw principal. Entonces, solo hay un módulo de python ahora. Pero esta vez recibo un nuevo error como se explicó anteriormente. – Shansal

+2

Por favor, describa cómo importó '' Publisher'' desde '' CreateAS.pyw'', donde se encuentra '' Publisher'' y cuál es su uso. –

Respuesta

12

supongo que está utilizando una versión de wxPython que es >= 2.8.11.0? Si es así, el paquete wx.lib.pubsub ha cambiado. This page describe los cambios. También hay un hilo en la lista de correo wxPythonhere que habla de esto.

Para hacer que todo esto funcione en mi proyecto, hice lo siguiente, describí here que formaba parte del subproceso anterior de la lista de distribución. Me resumir a continuación:

The much preferable alternative (ie no hacks!) if you can hack it (sorry!) is to use the same messaging protocol as v1, but in latest API, this is called "arg1":

# only in app's startup module 
from wx.lib.pubsub import setuparg1 
# in all modules that use pubsub 
from wx.lib.pubsub import pub as Publisher 

and replace any occurence of "Publisher()." by "Publisher."

Luego, en mi guión setup.py, he tenido que añadir lo siguiente a las opciones:

options = { 
    "py2exe": {"packages": ['wx.lib.pubsub']} 
} 
setup(data_files=data_files, 
     windows=[ 
       {'script': 'btpos.py'], 
       options=options) 

Ahora debería ser capaz de construir un ejecutable usando la nueva versión de pubsub, pero con la vieja API También es posible que desee comprobar la nueva api v3 de pubsub. Si su proyecto no es demasiado grande, probablemente pueda vivir sin cambiar demasiado.

+1

Importar Publisher después de que setuparg1 no funcione, mientras que lo intenta con setupv1. Sin embargo, en ambos casos, al compilar todavía obtengo el ImportError. –

4

tratan de esta manera:

from wx.lib.pubsub import setuparg1 
from wx.lib.pubsub import pub as Publisher 

continuación: reemplazar cualquier aparición de Publisher() por Publisher.

+3

Esta respuesta no proporciona nada nuevo sobre la respuesta aceptada, también esta es una pregunta de hace más de tres años. – meskobalazs

2

que estaba usando un código de ejemplo que utiliza wx.lib.pubsub a estudiar desde y me encontré con este problema también .

Para solucionar este problema, simplemente, que acaba de cambiar la línea:

from wx.lib.pubsub import Publisher as pub 

Para:

from wx.lib.pubsub import pub 

Las respuestas aceptadas ha enlaces que todavía lo hacen bien, pero por simplicidad, he agregó esta solución porque la solución aceptada fue un poco confusa.

+0

¡Esta era la forma más rápida de ejecutar un programa viejo rápidamente! –

Cuestiones relacionadas