Win10 / Pyinstaller ImportError:numpy.core.multiarray无法导入

ibrsph3r  于 2023-11-18  发布在  其他
关注(0)|答案(2)|浏览(98)

摘要

我刚刚写了一个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虚拟机中运行pyinstaller程序,除了我的原生Windows 10(当然,所有依赖项都是通过pip安装的)(一个快速的注意-当我在Win7上运行时,我没有得到任何我在Win10中看到的'lib not found:'错误,但程序仍然无法运行)
所有这些结果都没有影响我收到的错误消息“numpy.core.multiarray failed to import”。

问题

我如何让我的程序编译成一个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.

pbossiut

pbossiut1#

感谢Rick M,我能够发现我的版本太新,彼此不能很好地工作。我使用的配置是:
Python 3.5或3.7.2(最新版本为2019年1月23日)
Pyinstaller 3.4
numpy 1.15

5ktev3wc

5ktev3wc2#

我知道这是旧的,但我最近在Python 3.8.10,numpy 1.24.4和pyinstaller 6.1.0中遇到了这个问题,所以我希望我可以帮助其他也面临同样问题的人。
我的解决方案是在我正在转换为exe的主文件上显式导入numpy(否则,numpy将由我显式导入的另一个库导入)。所以只需在代码中包含:

import numpy as np

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

相关问题