Ошибка cx_Freeze: у объекта 'str' нет атрибута '__cause__' - PullRequest
2 голосов
/ 03 апреля 2012

Я пытаюсь заморозить свой проект Python3.2 и получить следующую ошибку после запуска получившегося исполняемого файла:

Возникла исключительная ситуация при вызове format_exception.У объекта 'str' нет атрибута '__cause__'.Исходное исключение: невозможно импортировать формат имени.

В проекте есть три внутренних пакета / модуля с файлами __init__.py.Он использует внешние пакеты: sqlite3, PyQt4, matplotlib, numpy, scipy.

Вот мой setup.py:

from cx_Freeze import setup, Executable

includes = ['re', 'PyQt4', 'os', 'scipy', 'csv', 'sqlite3', 'itertools', 'numpy', 'sys', 'matplotlib']
excludes = []
packages = []
path = []

GUI2Exe_Target = Executable(
    # what to build
    script = "xshape_report.py",
    #initScript = None,
    base = 'Win32GUI',
    #targetDir = r"dist",
    #targetName = "xshape_report.exe",
    #compress = True,
    #copyDependentFiles = True,
    #appendScriptToExe = False,
    #appendScriptToLibrary = False,
    icon = None
    )

setup(

    version = "0.1",
    description = "Reporting system",
    author = "Katya",
    name = "Xshape report",

    options = {"build_exe": {"includes": includes,
                             "excludes": excludes,
                             "packages": packages,
                             "path": path
                             }
               },

    executables = [GUI2Exe_Target]
    )

Та же ошибка, если я уйду, включает пустое.В чем может быть причина?

1 Ответ

2 голосов
/ 03 апреля 2012

Копирование моего ответа из списка рассылки, чтобы помочь другим людям, которые ищут это:

Бит «невозможно импортировать формат имени» - это некоторая проблема с вашим приложением. Вероятно, есть какой-то модуль, который он не обнаружил и должен скопировать.

Он должен показать более подробно о том, где происходит ошибка, но в cx_Freeze есть ошибка, которая приводит к сообщению 'str' object has no attribute '__cause__'. Это исправлено в версии разработки , поэтому вы получите правильные трассировки, если будете использовать это. Надеюсь, у нас скоро будет новый релиз.

Для людей в будущем: эта проблема существует с cx_Freeze 4.2.3, и я думаю, что релиз с исправлением будет 4.3.0. Если вы столкнетесь с этим (no attribute '__cause__') с более поздней версией, убедитесь, что для него есть ошибка.

...