#python#使用opencv和pyzbar,pyinstaller打包时报错:ImportError: numpy.core.multiarray failed to import

前提:代码在pycharm中运行畅通,但是打包成exe后,就报错:

大概主要意思就是:opencv依赖的包numpy未成功打包进去。
        numpy.core.multiarray failed to import

看到有些博主说的,是opencv和numpy的版本问题,但是如果版本有问题,为什么pycharm上可以运行呢。然后也看到很多朋友尝试了,版本升级和降级并没有用。

后来看到很多其他人的方法:

比如打包的时候,不打包成一个文件 去掉-F参数,然后打包的时候会有一个文件夹,把原始的(PycharmProjects\pythonProject\venv\Lib\site-packages)numpy文件夹,复制到打包的dist目录下的你打包的文件夹中。然后尝试运行还是报错,然后发现有3个叫numpy的文件夹,分别是:

numpy

numpy.libs

numpy-1.26.1.dist-info

一股脑的全复制进去,结果运行成功了。

后来发现numpy.libs文件有个dll文件,如下:

libopenblas64__v0.3.23-293-gc2f4bdbb-gcc_10_3_0-2bde3a66a51006b2b53eb373ff767a3f.dll

ai说是一个动态链接库,

尝试手动把这个dll文件打包,结果成了,报错消失了。具体代码如下:

pyinstaller --hidden-import numpy --add-data "libopenblas64__v0.3.23-293-gc2f4bdbb-gcc_10_3_0-2bde3a66a51006b2b53eb373ff767a3f.dll;./"  -F 你要打包的文件名****.py

要先把这个dll文件,复制到代码的 同级目录里面,再打包。

同理还有:pyzbar的报错 缺失:libzbar-64.dll ,libiconv.dll  都可以用相同的方式打包。

pyinstaller --hidden-import numpy --add-data "libiconv.dll;./" --add-data "libzbar-64.dll;./" --add-data "libopenblas64__v0.3.23-293-gc2f4bdbb-gcc_10_3_0-2bde3a66a51006b2b53eb373ff767a3f.dll;./"  -F ***.py

在安装OpenCV后,运行`import cv2`出现`ImportError: numpy.core.multiarray failed to import`的错误可能有几个原因。 首先,确保已经正确安装了NumPy库。可以使用`pip3 install numpy`命令安装NumPy库。如果已经安装了NumPy,可以尝试升级到最新版本,使用`pip3 install --upgrade numpy`命令。 如果仍然出现错误,可能是因为OpenCVNumPy版本不兼容。建议尝试降低OpenCV的版本。可以使用`pip3 install opencv-python==<version>`命令安装特定版本的OpenCV,其中`<version>`是你想要安装的版本号。可以查看OpenCV官方文档或者使用`pip3 search opencv-python`命令查找合适的版本号。 另外,还有可能是环境变量配置错误导致的问题。确保在使用`import cv2`之前,已经正确设置了Python的环境变量。可以参考OpenCV官方文档或者其他相关资料来配置环境变量。 最后,还有可能是其他库的冲突导致的错误。例如,报错中提到的`AttributeError: module 'logging' has no attribute 'Handler'`可能是由于logging库的版本问题。建议更新logging库的版本,使用`pip3 install --upgrade logging`命令。 综上所述,解决`ImportError: numpy.core.multiarray failed to import`错误的方法包括: 1. 确保正确安装了NumPy库,并尝试升级到最新版本。 2. 尝试降低OpenCV的版本。 3. 配置正确的环境变量。 4. 更新其他可能引起冲突的库的版本。 希望以上方法能够帮助您解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [树莓派导入opencv出错:ImportError: numpy.core.multiarray failed to import](https://blog.csdn.net/qq_30893653/article/details/123588324)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Numpy报错ImportError: numpy.core.multiarray failed to import](https://blog.csdn.net/Robin_Pi/article/details/120544691)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值