【问题标题】:scipy dll's not found by executable made with pyinstaller使用 pyinstaller 生成的可执行文件找不到 scipy dll
【发布时间】:2022-01-04 12:12:03
【问题描述】:

我正在尝试使用 Windows (10) 中的 pyinstaller 使我的 python 脚本可执行。 pyinstaller 进程没有任何问题,但是当我启动 .exe 时,只要程序到达需要使用 scipy 中的任何内容的步骤,它就会崩溃而没有错误消息 - 如果没有为用户安装 anaconda。如果 anaconda 存在,则没有问题(但我不能让该程序的未来用户安装 anaconda)。我通过查找这个问题推测问题是.exe找不到使用这些scipy模块所必需的.dll,但我不知道如何将它们添加到.exe(我尝试使用hiddenimports,我尝试将 anaconda3\myenv\Lib\site-packages 文件夹添加到 pyinstaller 查找这些内容的路径中)。我找到了一些解决方案,指出我应该在某处找到一个 extra-dll 文件夹并将其包含在 .spec 文件中,但它似乎对我来说不见了。

具有相同问题的最少可重现代码(基本上是从 curve_fit 文档中复制的):

import scipy.optimize as opt
import numpy as np

def func(x, a, b, c):

    return a * np.exp(-b * x) + c

xdata = np.linspace(0, 4, 50)

y = func(xdata, 2.5, 1.3, 0.5)

y_noise = np.random.normal(0,1,50)

ydata = y + y_noise

popt, pcov = opt.curve_fit(func, xdata, ydata)

print(popt)

python 2.7(是的,我知道,但我坚持使用它),anaconda 最新版本,pyinstaller 3.5,scipy 1.2.1

【问题讨论】:

    标签: python python-2.7 scipy pyinstaller exe


    【解决方案1】:

    如果有人在这里遇到同样的问题:答案不是使用 Anaconda。

    问题在 Anaconda 中的 Python 3.9 上也存在,原来是因为当前的 Anaconda(个人版 2021.11。据我所知)下载了不稳定的 5.xxdev 版本的 pyinstaller,不能很好地配合使用 scipy (并且在 Anaconda 中降级并没有解决问题)。解决它的是摆脱 Anaconda 并获得普通的旧 Python 3.10(可能也适用于 2.7.17)并使用 pip 安装必要的包。 (同时我忘记了旧帐户的登录凭据)

    【讨论】:

      猜你喜欢
      • 2019-12-19
      • 2020-12-18
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      • 2017-01-31
      • 2021-09-26
      相关资源
      最近更新 更多