2012-04-03 128 views
2

我想凍結我Python3.2項目,並獲得運行生成的可執行文件後,出現以下錯誤:cx_Freeze錯誤:「海峽」對象有沒有屬性「__cause__」

異常調用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] 
    ) 

,如果我離開同樣的錯誤包括空。 可能是什麼原因?

+0

您的代碼是否也會在python中引發異常,或者僅在凍結時才引發異常?它是一個奇怪的例外,因爲'格式'是一個函數,而不是一個模塊,所以我不知道爲什麼它試圖導入格式。 – aquavitae 2012-04-03 09:59:01

+0

只有當凍結。我在cx_freeze郵件列表上找到了以下答案:「'無法導入名稱格式'位與您的 應用程序有一些問題。可能有一些模塊沒有檢測到它需要複製 它應該顯示有關錯誤發生位置的更多細節,但cx_Freeze中存在一個錯誤,導致「str」對象沒有屬性「__cause__」消息。如果你想測試cx_Freeze的開發版本,那應該是固定的,所以你'會得到適當的回溯。「 – Katya 2012-04-03 13:18:03

+0

你能發佈一個鏈接到完整的代碼嗎? – aquavitae 2012-04-04 06:40:59

回答

2

從郵件列表複製我的回答幫誰搜索該其他人:

的「不能導入名稱格式」位是一些問題與您的應用程序。可能有一些模塊沒有檢測到它需要複製。

它應該顯示有關錯誤發生位置的更多詳細信息,但cx_Freeze中存在導致'str' object has no attribute '__cause__'消息的錯誤。這在development version中已修復,所以如果你使用它,你會得到適當的回溯。希望我們很快就能有新的發佈。

對於未來的人們:這個問題存在於cx_Freeze 4.2.3中,我猜測修復後的版本將是4.3.0。如果你遇到了這個問題(no attribute '__cause__')和更高版本,請確保提交了一個錯誤。

+1

謝謝!問題解決了,最新的開發版本提供了一個有意義的跟蹤,我可以調整我的setup.py,使所有需要的模塊都被複制到構建中 - 它並不總是自動完成的。 – Katya 2012-04-12 11:44:01

相關問題