Python cx\U冻结不包括库中的所有模块
因此,我尝试使用以下代码编译一个名为“File.py”的python脚本:Python cx\U冻结不包括库中的所有模块,python,python-3.x,cx-freeze,Python,Python 3.x,Cx Freeze,因此,我尝试使用以下代码编译一个名为“File.py”的python脚本: from cx_Freeze import setup, Executable # Define packages needed(not builtin) packages = ['scipy' , 'numpy'] options = { 'build_exe': { 'packages': packages, }, }
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,我已经将它们包含在packages变量中。但是,在编译并运行File.exe之后,我得到了错误:“ModuleNotFoundError:没有名为'scipy.spatial.ckdtree'的模块”。我正在使用Python3.6和cx_Freeze 6(支持Python3.6)。如何让cx\U Freeze包含所有必要的模块?尝试给出库的实际地址。因此,请查找scipy和numpy文件的位置,并在包中包含以下内容:
r“C:\Users\yourname\AppData\Local\Programs\Python\Python36\DLLs\tcl86t.dll”,
r“C:\Users\yourname\AppData\Local\Programs\Python36\DLLs\tk86t.dll”,
可能已经死了,但我会付出我的两分钱,因为多年来我在scipy与cx\u Freeze的结合中遇到了一些类似的问题。我很难找到关于这个问题的文档
首先,在运行File.exe时,在出现错误时检查对话框中的完整堆栈跟踪。ModuleNotFoundError是您的症状,但根本原因是试图加载模块的文件,通常是scipy中某个地方的_init__;.py文件
其次,转到该文件,并将正在加载的模块名与包名和别名进行比较。您正在查找模块名称或模块路径的差异。例如,我遇到的一个ckdtree加载问题是uu init_uuuy。py试图加载“ckdtree”,但分发版中的模块是“ckdtree”,或者在不应该有大写字母的地方有一个大写字母。在试图加载模块的文件中更改大小写可以解决问题。这是针对tkinter的。我可不傻。但你的方法仍然正确。我只是用我以前用过的代码作为例子哦,好吧。我使用packages=['scipy'、'numpy',r“C:\Users\Owner\AppData\Local\Programs\Python\Python36\Lib\site packages\scipy\spatial\ckdtree.cp36-win\u amd64.pyd”]指定了模块的文件路径,不幸的是,它仍然找不到模块。