Win10 / Pyinstaller ImportError: numpy.core.multiarray failed to import Win10 / Pyinstaller 中导入numpy.core.multiarray失败。

4

摘要

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

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

此外,当我在Python中运行'from numpy import multiarray'时,甚至会打印出一个不能导入的错误。

我尝试过的

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

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

在Windows 10和7虚拟机中运行程序上的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_导致了这个问题。你可以去检查一下。或者你可以尝试卸载你所拥有的版本然后安装一个比最新版本更低的版本。 - Rick M.
我该如何检查呢?我尝试运行“pip list”,但只显示了一个numpy版本。此外,多次运行“pip uninistall numpy”只会删除一个numpy,因此我不知道我的其他numpys在哪里。 - Jeffrey - Siothrún as Gaeilge
你是否使用了虚拟环境?如果你在这个隔离和受控的环境中运行pyinstaller,它可能会解决你的问题。 - Dorian Turba
我没有使用虚拟环境。我今天稍后可以尝试使用venv看看是否有帮助。 - Jeffrey - Siothrún as Gaeilge
这可能是最新的numpy和pyinstaller存在问题。您是否尝试使用旧版本的_numpy_,而不是最新版本? - Rick M.
显示剩余2条评论
2个回答

2

感谢Rick M的帮助,我发现我的版本过于新,不兼容。以下是我使用的配置,可以正常工作:

Python 3.5或3.7.2(截至2019年1月23日最新版本)

Pyinstaller 3.4

numpy 1.15

“Original Answer”翻译成中文为“最初的回答”。


0
我知道这是老问题,但最近我在使用Python 3.8.10、numpy 1.24.4和pyinstaller 6.1.0时遇到了这个问题,所以我希望我能帮助其他也遇到同样问题的人。
我的解决方案是在我要转换为exe的主文件中显式导入numpy(否则,numpy会被另一个我显式导入的库导入)。所以只需在你的代码中包含以下内容:
import numpy as np

然后pyinstaller应该能够检测到它。希望这有所帮助。
编辑:我无法降级我的numpy,因为我使用的一个库需要那个版本的numpy。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接