ImportError: no se puede importar el nombre MAXREPEAT con cx_Freeze

Tengo un problema con cx_Freeze al ejecutar una aplicación congelada (funciona bien sin congelar).

Cuando se ejecuta el progtwig da como resultado el siguiente rastreo:

 Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/cx_Freeze/initscripts/Console.py", line 27, in  exec code in m.__dict__ File "PythonApp/mainframe.py", line 3, in  File "/usr/local/lib/python2.7/site-packages/dbus/__init__.py", line 103, in  from dbus._dbus import Bus, SystemBus, SessionBus, StarterBus File "/usr/local/lib/python2.7/site-packages/dbus/_dbus.py", line 39, in  from dbus.bus import BusConnection File "/usr/local/lib/python2.7/site-packages/dbus/bus.py", line 39, in  from dbus.connection import Connection File "/usr/local/lib/python2.7/site-packages/dbus/connection.py", line 27, in  import threading File "/usr/local/lib/python2.7/threading.py", line 44, in  module='threading', message='sys.exc_clear') File "/usr/local/lib/python2.7/warnings.py", line 57, in filterwarnings import re File "/usr/local/lib/python2.7/re.py", line 105, in  import sre_compile File "/usr/local/lib/python2.7/sre_compile.py", line 14, in  import sre_parse File "/usr/local/lib/python2.7/sre_parse.py", line 17, in  from sre_constants import * File "/usr/local/lib/python2.7/sre_constants.py", line 18, in  from _sre import MAXREPEAT ImportError: cannot import name MAXREPEAT 

Estoy en Linux utilizando una versión de python 2.7.4 que _sre desde la fuente, e importando _sre desde un mensaje de solicitud y puedo acceder a la constante MAXREPEAT .

Por lo general, esto se debe a que cx_Freeze no arrastra todo a library.zip y se puede arreglar al nombrar explícitamente el módulo en la lista de inclusión de configuración de cx_Freeze y es la solución a esta pregunta similar , pero eso no ha ayudado aquí.

Este módulo _sre parece extraño … no hay _sre archivo _sre en la library.zip generado pero por ese error parece que puede encontrarlo, sin embargo, ¿no puede importar ese símbolo? Seguramente si el módulo no estuviera allí sería un error ” No module named _sre “. O posiblemente una importación circular pero _sre stub no tiene ninguna importación.

Lo que es extraño es que parece que tampoco puedo encontrar el archivo. ¿Se crea este módulo de forma dinámica al importar de alguna manera?

 find /usr/local/lib/python2.7 -name "_sre*" 

no devuelve nada, y el módulo _sre importado tampoco tiene un atributo __file__ , por lo que no tengo idea de cómo asegurarme de que esté incluido, ya que aparece como integrado.

 >>> import _sre >>> _sre.__file__ Traceback (most recent call last): File "", line 1, in  AttributeError: 'module' object has no attribute '__file__' >>> repr(_sre) "" 

Esto es similar a esta pregunta que también se hizo recientemente, pero en este caso él estaba recibiendo el error en el intérprete regular, sin embargo, para mí, solo está en cx_Freeze .

editar

Ejecutar python -v parece que está incorporado, así que no estoy seguro de por qué cx_Freeze puede fallar, o cómo lo arreglaría.

 ... # /usr/local/lib/python2.7/re.pyc matches /usr/local/lib/python2.7/re.py import re # precompiled from /usr/local/lib/python2.7/re.pyc # /usr/local/lib/python2.7/sre_compile.pyc matches /usr/local/lib/python2.7/sre_compile.py import sre_compile # precompiled from /usr/local/lib/python2.7/sre_compile.pyc import _sre # builtin # /usr/local/lib/python2.7/sre_parse.pyc matches /usr/local/lib/python2.7/sre_parse.py import sre_parse # precompiled from /usr/local/lib/python2.7/sre_parse.pyc ... 

_sre es un módulo integrado , por lo que no hay ningún archivo que incluir, pero no tiene un atributo MAXREPEAT en Python 2.7.3:

 >>> import _sre >>> _sre  >>> _sre.MAXREPEAT Traceback (most recent call last): File "", line 1, in  AttributeError: 'module' object has no attribute 'MAXREPEAT' 

Mi mejor conjetura es que su copia congelada de alguna manera tiene la biblioteca estándar .py módulos de Python 2.7.4, pero el intérprete de Python comstackdo de 2.7.3 o una versión anterior. Veo que estás trabajando desde /usr/local – tal vez sea una versión anterior de /usr .

Encontré este problema cuando acabo de actualizar de ubuntu 12.10 a 13.04, y lo arreglé copiando / usr / bin / python a / path / to / my / env / bin /, y funcionó bien

cp /user/bin/python /path/to/my/env/bin/

o, hay una manera más elegante de arreglar esto ( referencia ):

mkvirtualenv

Si todo lo demás falla, tengo cosas que funcionan con esto: http://www.kiwisoft.co.uk/blog/2014/08/17/fixed-importerror-cannot-import-name-maxrepeat

Tuve el mismo problema recientemente. La configuración LD_LIBRARY_PATH = solucionó el problema.

Estaba usando cx_freeze 4.3.2 en mi máquina win 8 y siempre mostraba ImportError: cannot import name MAXREPEAT with cx Freeze si alguna vez intenté congelar un módulo no incorporado, y una vez que descargué la versión 4.3.1, funciona , Soy capaz de congelar todos mis progtwigs de python 3.3 sin ningún problema ahora.

Tenía problemas similares en Windows 8: era solo un problema de PYTHONPATH. compruebe que PYTHONPATH existe escribiendo lo siguiente en una sesión de python:

importación OS

os.environ [‘PYTHONPATH’]. split (os.pathsep)

Si obtiene un error, configure su PYTHONPATH utilizando este enfoque.

¿Cómo agregar al pythonpath en windows 7?