2012-04-03 12 views
2

Ich versuche, meine python3.2 Projekt einzufrieren und die folgende Fehlermeldung erhalten, nachdem die ausführbare Datei ausgeführt wird:cx_Freeze Fehler: ‚str‘ Objekt hat kein Attribut ‚__cause__‘

Exception ausgelöst, wenn format_exception Aufruf. 'str' Objekt hat kein Attribut '__cause__'. Ursprüngliche Ausnahme: Nameformat kann nicht importiert werden.

Das Projekt hat drei interne Pakete/Module mit __init__.py Dateien. Es verwendet externe Pakete: sqlite3, PyQt4, matplotlib, numpy, scipy.

Hier ist meine 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] 
    ) 

Der gleiche Fehler, wenn ich verlassen enthält leer. Was könnte der Grund sein?

Der ‚kann nicht name-Format importieren‘ Bit ist ein Problem mit Ihrer Anwendung:

+0

Erhebt Ihr Code die Ausnahme in Python oder nur, wenn Sie ihn einfrieren? Es ist eine seltsame Ausnahme, weil "format" eine Funktion ist, kein Modul, also bin ich mir nicht sicher, warum es versucht Format zu importieren. – aquavitae

+0

Nur wenn eingefroren. Ich habe die folgende Antwort auf cx_freeze Mailing-Liste: "Das 'kann Name Format nicht importieren' Bit ist ein Problem mit Ihrer Anwendung. Wahrscheinlich gibt es ein Modul, das es nicht muss Es sollte es zeigen Es gibt einen Fehler in cx_Freeze, der dazu führt, dass das Objekt '' str 'kein Attribut' __cause__ 'hat. Wenn Sie die Entwicklungsversion von cx_Freeze testen möchten, sollten Sie dies korrigieren Ich werde eine genaue Rückverfolgung bekommen. " – Katya

+0

Können Sie einen Link auf den vollständigen Code veröffentlichen? – aquavitae

Antwort

2

meine Antwort aus der Mailing-Liste Kopieren andere Menschen, die für diese Suche zu helfen. Wahrscheinlich gibt es ein Modul, das nicht erkannt wurde, das es kopieren muss.

Es sollte mehr Details darüber zeigen, wo der Fehler auftritt, aber es gibt einen Fehler in cx_Freeze, der in der 'str' object has no attribute '__cause__' Nachricht resultiert. Dies ist in der development version behoben, so dass Sie richtige Tracebacks erhalten, wenn Sie das verwenden. Hoffentlich können wir bald eine neue Veröffentlichung haben.

Für Menschen in der Zukunft: Dieses Problem besteht mit cx_Freeze 4.2.3, und ich denke, die Veröffentlichung mit dem Update wird 4.3.0 sein. Wenn Sie mit einer späteren Version auf dieses Problem stoßen (no attribute '__cause__'), vergewissern Sie sich, dass ein Fehler vorliegt.

+1

Danke! Problem gelöst, letzte Entwicklungsversion gab eine sinnvolle Ablaufverfolgung und ich konnte meine setup.py so anpassen, dass alle benötigten Module in den Build kopiert wurden - es wird nicht immer automatisch gemacht. – Katya