簡體   English   中英

cx_Freeze 不包括庫中的所有模塊

[英]cx_Freeze not including all modules in library

所以我正在嘗試使用以下代碼編譯一個名為“File.py”的 python 腳本:

    from cx_Freeze import setup, Executable
    # Define packages needed(not builtin)
    packages = ['scipy' , 'numpy']
    options = {
        'build_exe': {
            'packages': packages,
        },
    }

    setup(name='Monitor',
          version = '0.8',
          description = 'Monitors stuff.',
          options = options,
          executables = [Executable("File.py")])

“File.py”僅使用 scipy 和 numpy,我已將它們包含在包變量中。 但是,在編譯並運行 File.exe 后,出現錯誤:“ModuleNotFoundError:沒有名為‘scipy.spatial.ckdtree’的模塊”。 我正在使用 python 3.6 和 cx_Freeze 6(支持 python 3.6)。 如何讓 cx_Freeze 包含所有必要的模塊?

嘗試給出圖書館的實際地址。 因此,找到 scipy 和 numpy 文件所在的位置以及包中的內容,包括如下內容: r"C:\\Users\\yourname\\AppData\\Local\\Programs\\Python\\Python36\\DLLs\\tcl86t.dll", r"C:\\Users\\yourname\\AppData\\Local\\Programs\\Python\\Python36\\DLLs\\tk86t.dll",

可能已經死了,但我會投入我的兩分錢,這些年來在 scipy 與 cx_Freeze 結合使用時遇到了一些這樣的問題。 我無法在 SO 上找到有關此問題的文檔。

首先,當您運行 File.exe 時,請在出現錯誤時檢查對話框中的完整堆棧跟蹤。 ModuleNotFoundError 是您的症狀,但根本原因在於哪個文件正在嘗試加載模塊,通常是 scipy 中某處的 __init__.py 文件。

其次,轉到該文件並將正在加載的模塊名稱與包名稱和別名進行比較。 您正在尋找模塊名稱或模塊路徑方面的差異。 例如,我遇到的一個 ckdtree 加載問題是 __init__.py 試圖加載 'ckdtree',但分發中的模塊是 'cKDTree' 或者有一個大寫字母,而不應該是一個。 更改嘗試加載模塊的文件中的大小寫可解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM