cx_Freeze:主脚本中的 Python 错误 - ModuleNotFoundError:没有名为 'scipy.spatial.ckdtree 的模块

Posted

技术标签:

【中文标题】cx_Freeze:主脚本中的 Python 错误 - ModuleNotFoundError:没有名为 \'scipy.spatial.ckdtree 的模块【英文标题】:cx_Freeze: Python error in main script - ModuleNotFoundError: No module named 'scipy.spatial.ckdtreecx_Freeze:主脚本中的 Python 错误 - ModuleNotFoundError:没有名为 'scipy.spatial.ckdtree 的模块 【发布时间】:2020-01-16 04:27:00 【问题描述】:

在 cx_Freeze 基于我的 Python 代码构建可执行文件后,我遇到以下错误。

C:\Users\MAIN\Desktop\NEW\build\exe.win-amd64-3.7>GUI-Peak-Analysis
Traceback (most recent call last):
File "C:\Users\MAIN\AppData\Local\Programs\Python\Python37\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 40, in run
module.run()
File "C:\Users\MAIN\AppData\Local\Programs\Python\Python37\lib\site-packages\cx_Freeze\initscripts\Console.py", line 37, in run
exec(code, '__name__': '__main__')
File "GUI-Peak-Analysis.py", line 6, in <module>
File "C:\Users\MAIN\Desktop\NEW\Goldindec.py", line 11, in <module>
from scipy.interpolate import interp1d  ## to smooth spectrum
File "C:\Users\MAIN\AppData\Local\Programs\Python\Python37\lib\site-packages\scipy\interpolate\__init__.py", line 167, in <module>
from .interpolate import *
File "C:\Users\MAIN\AppData\Local\Programs\Python\Python37\lib\site-packages\scipy\interpolate\interpolate.py", line 26, in <module>
from .interpnd import _ndim_coords_from_arrays
File "interpnd.pyx", line 1, in init scipy.interpolate.interpnd
File "C:\Users\MAIN\AppData\Local\Programs\Python\Python37\lib\site-packages\scipy\spatial\__init__.py", line 100, in <module>
from .ckdtree import *
ModuleNotFoundError: No module named 'scipy.spatial.ckdtree'

我已按照各种网站上的说明进行操作,包括有关如何解决问题的 cx_Freeze 常见问题解答。我尝试从https://github.com/scipy/scipy/releases (scipy-1.4.1.zip) 下载 scipy 模块,并在使用 cx_Freeze 构建程序期间包括 scipy.spatial.ckdtree 模块。但是,当我浏览文件夹时,我只看到 C 和/或 C++ 源文件和头文件

这是我的安装文件的代码:

import sys
from cx_Freeze import setup, Executable

# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = "packages": ["os", "astropy", "matplotlib", "numpy", "pyqt5", "scipy"], 
                     "excludes": ["tkinter"]

# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
#if sys.platform == "win32":
#    base = "Win32GUI"

setup(  name = "GUI-Peak-Analysis",
        version = "0.1",
        description = "My GUI application!",
        options = "build_exe": build_exe_options,
        executables = [Executable("GUI-Peak-Analysis.py", base=base)])

【问题讨论】:

大部分 scipy 是用 C/C++ 编写的。您的构建是否在其他地方或以前工作过? @ShpielMeister no 【参考方案1】:

尝试执行一行 python 脚本(如果失败,请执行 pip install scipy 并重做): from scipy.spatial.ckdtree import *

【讨论】:

我用以下代码创建了一个单行python文件:from scipy.spatial.ckdtree import *.我使用 cx_Freeze 基于这一行 python 脚本构建我的可执行文件。当我打开可执行文件时,会出现一个控制台窗口并在几秒钟后消失。当我从命令提示符运行程序时,遇到以下错误:ModuleNotFoundError: No module named 'scipy.spatial.ckdtree.失败后,我做了 pip install scipy 并基本上重做了该过程。我仍然遇到同样的问题。 让我们看看你的路径。并尝试将 scipy 本身作为 oneliner 导入。另外,让我们检查一下你的 python: : which -a python

以上是关于cx_Freeze:主脚本中的 Python 错误 - ModuleNotFoundError:没有名为 'scipy.spatial.ckdtree 的模块的主要内容,如果未能解决你的问题,请参考以下文章

cx_Freeze:Python 错误主脚本。找不到模块错误:没有名为 pygments.lexers.python 的模块

使用 cx_Freeze 冻结 Python 3.7 脚本时如何修复错误

使用 cx_Freeze 冻结时不显示主窗口图标

Python cx_freeze 构建错误

使用 cx_Freeze 创建可执行文件后不断收到“filedialog”错误

使用 cx_Freeze 创建 exe 或 msi 时使用 Tkinter tix 的 Python 错误