У меня возникла проблема с cx_Freeze
при запуске замороженного приложения (отлично работает незамерзаемо).
При запуске программы это приводит к следующей трассировке:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/cx_Freeze/initscripts/Console.py", line 27, in <module>
exec code in m.__dict__
File "PythonApp/mainframe.py", line 3, in <module>
File "/usr/local/lib/python2.7/site-packages/dbus/__init__.py", line 103, in <module>
from dbus._dbus import Bus, SystemBus, SessionBus, StarterBus
File "/usr/local/lib/python2.7/site-packages/dbus/_dbus.py", line 39, in <module>
from dbus.bus import BusConnection
File "/usr/local/lib/python2.7/site-packages/dbus/bus.py", line 39, in <module>
from dbus.connection import Connection
File "/usr/local/lib/python2.7/site-packages/dbus/connection.py", line 27, in <module>
import threading
File "/usr/local/lib/python2.7/threading.py", line 44, in <module>
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 <module>
import sre_compile
File "/usr/local/lib/python2.7/sre_compile.py", line 14, in <module>
import sre_parse
File "/usr/local/lib/python2.7/sre_parse.py", line 17, in <module>
from sre_constants import *
File "/usr/local/lib/python2.7/sre_constants.py", line 18, in <module>
from _sre import MAXREPEAT
ImportError: cannot import name MAXREPEAT
Я работаю на Linux, используя версию python 2.7.4, которую я создал из источника, и импортирует _sre
из приглашения, и я могу получить доступ к константе MAXREPEAT
.
Обычно это до cx_Freeze
не тянет все в library.zip
и может быть исправлено путем явного указания модуля в списке cx_Freeze
setup include и является решением для этого аналогичный вопрос, но это не помогло здесь.
Этот _sre
модуль кажется странным.. нет файла _sre
в library.zip
, но из этой ошибки кажется, что он может его найти, однако он не может импортировать этот символ? Конечно, если модуль не был там, это было бы ошибкой "No module named _sre
". Или, возможно, круговой импорт, но _sre
заглушка не имеет импорта.
Какой странный я тоже не могу найти файл - этот динамический динамический модуль создается при импорте?
find /usr/local/lib/python2.7 -name "_sre*"
ничего не возвращает, а импортированный _sre
модуль не имеет атрибута __file__
, поэтому я не знаю, как убедиться, что он включен, поскольку он отображается как встроенный.
>>> import _sre
>>> _sre.__file__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute '__file__'
>>> repr(_sre)
"<module '_sre' (built-in)>"
Это похожий на этот вопрос, который был задан недавно, но в этом случае он получал ошибку в обычном интерпретаторе, однако для меня это просто в cx_Freeze
.
изменить
Запуск python -v
действительно выглядит как встроенный, поэтому я не уверен, почему cx_Freeze
может пропустить его или как я его исправит.
...
# /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
...