将 CX_Freeze 与 Scipy 一起使用:scipy.special._ufuncs.py

Posted

技术标签:

【中文标题】将 CX_Freeze 与 Scipy 一起使用:scipy.special._ufuncs.py【英文标题】:Using CX_Freeze with Scipy: scipy.special._ufuncs.py 【发布时间】:2013-10-28 11:35:39 【问题描述】:

我在冻结我的程序时遇到问题。我将其缩小到 scipy 模块。我要冻结的 porgramm 是:

from scipy import signal
signal.hann(1000)

我的设置脚本是:

import sys
from cx_Freeze import setup, Executable

build_exe_options = 

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(  name = "Some name",
        version = "1.0",
        author="My name",
        description = "My GUI application!",
        options = "build_exe": build_exe_options,
        executables = [Executable("Script_Name.py", base=base)])
                                    # ^CHANGE THIS NAME!!!

这是picture of the error message。我还尝试在设置文件中包含 scipy.signal 作为

build_exe_options = "includes":"scipy.signal"

但它没有任何好处。请帮帮我。

【问题讨论】:

在this question,提问者发现重命名构建目录中的库修复了它。你在构建目录中有一个名为scipy.special._ufuncs.pyd(或.dll)的文件吗?您可以尝试将其重命名为 _ufuncs.pyd(或 .dll)吗? 我已经通过从 numpy\core 复制 libmmd.dll 和 libifcoremd.dll 来修复它 【参考方案1】:

我遇到了类似的问题,可以通过以下方式解决:

1 build 目录包含一个名为 _ufunc.pyd 的文件(而不是上面提到的 scipy.special._ufuncs.pyd)。您可以通过指定 build_exe_options 来实现:

build_exe_options =  'packages': ['scipy'],
                     "include_files": [('path2python\\Lib\\site-packages\\scipy\\special\\_ufuncs.pyd','_ufuncs.pyd')]

2 确保 ufunc.pyd 使用的所有 dll 也在构建目录中。就我而言, libifcoremd.dll 和 libmmd.dll 失败了。您可以通过dependencywalker 进行检查

希望对你有所帮助。

【讨论】:

以上是关于将 CX_Freeze 与 Scipy 一起使用:scipy.special._ufuncs.py的主要内容,如果未能解决你的问题,请参考以下文章

将 cx_freeze 与 tkinter 一起使用时出错

将 cx_freeze 与 mysql-connector 一起使用

无法为 Python 3.7 64 位安装 cx_Freeze 或 scipy

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

将 numba.jit 与 scipy.integrate.ode 一起使用

Scipy:如何将 Bounds 与 trust-constr 一起使用?