[英]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.