【问题标题】:Win10 / Pyinstaller ImportError: numpy.core.multiarray failed to importWin10 / Pyinstaller ImportError: numpy.core.multiarray 导入失败
【发布时间】:2019-06-12 11:22:51
【问题描述】:

总结

我刚刚编写了一个 Python (3.7.2) 程序和一个使用 Pyinstaller (3.4) 将其编译为 exe 的程序。 Python 文件使用 opencv-python(需要 numpy)作为依赖项。尽管已经寻找了一段时间,但我在网上看到的解决方案都没有对我有用。

我没有安装 anaconda,也没有我正在使用的任何库的多个版本(包括 Python 本身)。

另外,当我在 python 中运行“from numpy import multiarray”时,即使这样也会打印出无法导入的错误。

我的尝试

卸载并重新安装 numpy 和 opencv-python

将 numpy 更新到最新版本 (1.16)。

在 Windows 10 和 7 VM 中的程序上运行 pyinstaller,除了我的原生 Windows 10(当然,所有依赖项都是通过 pip 安装的)(快速说明——当我在 Win7 上运行时,我没有得到任何我在Win10中看到的'lib not found:'错误,但程序仍然无法运行)

这些结果都没有对我收到的错误消息产生影响 'numpy.core.multiarray 导入失败'。

问题

如何让我的程序编译为 exe?我愿意使用其他程序(pyinstaller 除外)。

谢谢!!

我拥有的数据

这是在 python 终端中运行“from numpy import multiarray”的错误消息:

ImportError: cannot import name 'multiarray' from 'numpy' (C:\Users\name\AppData\Local\Programs\Python\Python37-32\lib\site-packages\numpy\__init__.py)

这是尝试运行已编译的 exe 的完整错误消息

PS C:\Users\name\Downloads\py\dist\SignRecorder> .\SignRecorder.exe
ImportError: numpy.core.multiarray failed to import
Traceback (most recent call last):
File "SignRecorder.py", line 1, in <module>
File "c:\users\name\appdata\local\programs\python\python37-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\cv2\__init__.py", line 3, in <module>
ImportError: numpy.core.multiarray failed to import
[15208] Failed to execute script SignRecorder

这是 pyinstaller 的最终构建输出

C:\Users\name\Downloads\py\build\SignRecorder\SignRecorder.exe
19881 INFO: Building EXE from EXE-00.toc completed successfully.
19893 INFO: checking COLLECT
19893 INFO: Building COLLECT because COLLECT-00.toc is non existent
19894 INFO: Building COLLECT COLLECT-00.toc
28366 INFO: Building COLLECT COLLECT-00.toc completed successfully.

【问题讨论】:

  • 很可能是您的计算机上安装了另一个版本的 numpy 导致此问题。你可能想检查一下。或者您可以尝试卸载您拥有的版本,然后安装低于最新可用版本的版本。
  • 我该如何检查呢?我尝试运行“点子列表”,它只显示了一个 numpy 版本。此外,多次运行 'pip uninistall numpy' 只会删除一次 numpy,所以我不知道我的其他 numpy 会在哪里。
  • 您是否使用了虚拟环境?如果您在这个隔离和受控的环境中运行 pyinstaller,它可能会解决您的问题。
  • 我没有使用虚拟环境。我可以尝试使用 venv 并在今天晚些时候看到它有帮助
  • 我用venv创建了一个虚拟环境,还是报同样的错误:(我确实记得激活环境) Traceback(最近一次调用最后一次):文件“”,第1行,在 ImportError: cannot import name 'multiarray' from 'numpy' (C:\Users\name\Documents\Standard Documents\Programming\Environments\SignRecorderEnvironment\lib\site-packages\numpy_init_ .py)

标签: python numpy opencv pyinstaller


【解决方案1】:

感谢 Rick M,我能够发现我的版本太新,不能很好地相互配合。我使用的有效配置是:

Python 3.5 或 3.7.2(最新于 2019 年 1 月 23 日)

Pyinstaller 3.4

numpy 1.15

【讨论】:

    猜你喜欢
    • 2017-12-05
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 2021-02-25
    • 2016-03-07
    • 2022-08-13
    相关资源
    最近更新 更多