Numpy报错:ImportError: numpy.core.multiarray failed to import

导入自定义的 python 模块时,出现以下报错:

ImportError: numpy.core.multiarray failed to import
    from .cv2 import *
ImportError: numpy.core.multiarray failed to import

原因:

numpy 版本过低或者过高

解决:

  • 查看numpy 版本:pip show numpy
    我当前环境中的 numpy 版本是:Version: 1.16.5
  • 升级:pip install -U numpy
(tensorflow) Robin-macbook-pro:~ robin$ pip install -U numpy
Collecting numpy
  Downloading https://files.pythonhosted.org/packages/6a/9d/984f87a8d5b28b1d4afc042d8f436a76d6210fb582214f35a0ea1db3be66/numpy-1.19.5-cp36-cp36m-macosx_10_9_x86_64.whl (15.6MB)
     |████████████████████████████████| 15.6MB 1.3MB/s 
ERROR: tensorflow 1.13.1 has requirement protobuf>=3.6.1, but you'll have protobuf 3.6.0 which is incompatible.
Installing collected packages: numpy
  Found existing installation: numpy 1.16.5
    Uninstalling numpy-1.16.5:
      Successfully uninstalled numpy-1.16.5
Successfully installed numpy-1.19.5

结果还是不行,遂给 numpy 降级:pip install -U numpy==1.14.0(之前是 1.16.5

不仅造成了不少冲突,而且没效果:

(tensorflow) Robin-macbook-pro:~ robin$ pip install -U numpy==1.14.0
Collecting numpy==1.14.0
  Downloading https://files.pythonhosted.org/packages/33/c4/1ea5344793c159556110e42c94c9374cb08ce2a2727374cd467bd97f6579/numpy-1.14.0-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.7MB)
     |████████████████████████████████| 4.7MB 230kB/s 
ERROR: tensorflow 1.13.1 has requirement protobuf>=3.6.1, but you'll have protobuf 3.6.0 which is incompatible.
ERROR: pmdarima 1.3.0 has requirement numpy>=1.16, but you'll have numpy 1.14.0 which is incompatible.
ERROR: phik 0.9.8 has requirement numpy>=1.15.4, but you'll have numpy 1.14.0 which is incompatible.
ERROR: librosa 0.8.0 has requirement numpy>=1.15.0, but you'll have numpy 1.14.0 which is incompatible.
ERROR: astropy 4.0 has requirement numpy>=1.16, but you'll have numpy 1.14.0 which is incompatible.
Installing collected packages: numpy
  Found existing installation: numpy 1.19.5
    Uninstalling numpy-1.19.5:
      Successfully uninstalled numpy-1.19.5
Successfully installed numpy-1.14.0

还是不行:

将numpy更到最新版本:pip install -U numpy
同时更新 opencv 的版本试试,这是当前版本:

在这里插入图片描述
本身就是最新版本,尝试过没用。

在这里插入图片描述后来发现,问题在于

  • import numpy as numpy
    会报错:ImportError: numpy.core.multiarray failed to import
  • import cv2
    会报错:AttributeError: module 'logging' has no attribute 'Handler'

最后发现,最为离奇诡异的是,在不同的文件夹下面执行相同的代码(import numpy as np)是没有任何问题的

(1)

/Users/robin/software/anaconda3/envs/tensorflow/bin/python3.6 /Users/robin/MLcode/Pycharm_Project/tensorflow/2021/0823_face_recognition_environment/test.py

Process finished with exit code 0

(2)

/Users/robin/software/anaconda3/envs/tensorflow/bin/python3.6 /Users/robin/MLcode/Pycharm_Project/tensorflow/2021/0823_face_recognition_environment/ui/test.py
Traceback (most recent call last):
  File "/Users/robin/MLcode/Pycharm_Project/tensorflow/2021/0823_face_recognition_environment/ui/test.py", line 1, in <module>
    import numpy as np
  File "/Users/robin/software/anaconda3/envs/tensorflow/lib/python3.6/site-packages/numpy/__init__.py", line 187, in <module>
    from .testing import Tester
  File "/Users/robin/software/anaconda3/envs/tensorflow/lib/python3.6/site-packages/numpy/testing/__init__.py", line 10, in <module>
    from unittest import TestCase
  File "/Users/robin/software/anaconda3/envs/tensorflow/lib/python3.6/unittest/__init__.py", line 59, in <module>
    from .case import (TestCase, FunctionTestCase, SkipTest, skip, skipIf,
  File "/Users/robin/software/anaconda3/envs/tensorflow/lib/python3.6/unittest/case.py", line 278, in <module>
    class _CapturingHandler(logging.Handler):
AttributeError: module 'logging' has no attribute 'Handler'

Process finished with exit code 1

最后我放弃治疗了,新建了一个文件夹,将文件移动过去了,就当做 Pycharm 抽风了吧

浪费一下午时间…!!!!

<think>嗯,用户遇到了导入cv2时出现ImportError:numpy.core.multiarrayfailedtoimport的错误。根据用户提供的三个引用,我需要综合分析这个问题。引用[1]提到这个问题可能与numpy的版本不兼容有关。引用[2]具体给出了解决方案:卸载当前numpy版本,安装指定版本1.26.4。引用[3]则提到在YOLOv10训练中出现同样错误时,可以通过注释绘图相关代码来规避。用户现在明确要解决导入cv2时的这个问题。看起来核心矛盾点是numpy版本兼容性,特别是新版本可能存在的ABI变更问题。从引用内容看,numpy团队在1.24版本后重构了内部模块结构,可能将core.multiarray移动到了_core.multiarray。我考虑给用户一个完整的解决方案路线。首先要确认numpy版本状态,然后建议用户回退到兼容版本。可以推荐三种降级方法:指定版本安装、清除缓存重装、创建虚拟环境隔离安装。考虑到引用[3]提到的规避方案,也可以提示遇到绘图错误时的临时解决方法。用户可能是计算机视觉开发者或学习者,正在使用opencv相关功能。ta可能已经尝试过网上搜索,但需要更系统的解决方案。我需要在回复时强调版本兼容的重要性,并提醒虚拟环境的使用,因为这是Python开发中的最佳实践。用户情绪似乎比较着急,因为导入错误会直接中断工作流。我的回复应该快速给出可操作步骤,同时解释技术背景让用户理解原因。对于高级用户,还可以建议诊断ABI版本的方法。</think> 根据引用内容和问题本质,以下是解决`ImportError: numpy._core.multiarray failed to import`的完整方案: --- ### **问题原因分析** 1. **版本冲突**:OpenCV依赖特定版本的NumPy(引用[2]) 2. **模块路径变更**:NumPy ≥1.24 将`core.multiarray`重构为`_core.multiarray`,旧版OpenCV可能不兼容此变更 3. **隐式依赖问题**:其他库(如PyTorch)自动安装不兼容的NumPy版本(引用[3]) --- ### **解决方案** #### ✅ **方法1:强制降级NumPy(推荐)** ```bash # 卸载当前版本 pip uninstall -y numpy opencv-python # 安装兼容版本(1.22.x~1.25.x验证可用) pip install numpy==1.24.4 opencv-python==4.8.1.78 --no-cache-dir ``` > **原理**:新版本NumPy存在ABI不兼容问题,降级可规避重构导致的导入失败[^2] #### ✅ **方法2:清理环境重装** ```bash # 删除残留包 pip uninstall -y numpy opencv-python rm -rf ~/.cache/pip # Linux/macOS del /Q /S "%APPDATA%\pip\Cache" # Windows # 重装最新版(测试兼容性) pip install --upgrade numpy opencv-python-headless ``` #### ✅ **方法3:虚拟环境隔离** ```bash python -m venv cv_env # 创建纯净环境 source cv_env/bin/activate # Linux/macOS cv_env\Scripts\activate # Windows pip install numpy==1.25.2 opencv-contrib-python==4.9.0.80 ``` #### ⚠️ **临时规避方案(限训练场景)** 若出现在YOLO等框架训练时(引用[3]): ```python # 修改ultralytics/engine/trainer.py # 搜索 self.plot_metrics() 并注释此行 # 改为: # if False: # 跳过绘图 # self.plot_metrics() ``` > **注意**:此方法跳过指标绘图,不影响核心训练但会丢失可视化 --- ### **验证方案** 新建`test_import.py`: ```python import numpy as np print(f"NumPy version: {np.__version__}") # 应显示1.24.4等兼容版本 import cv2 print(f"OpenCV version: {cv2.__version__}") cv2.waitKey(0) # 测试无报错即成功 ``` --- ### **预防措施** 1. **冻结版本**:在`requirements.txt`中明确指定版本: ```ini numpy==1.24.4 opencv-python==4.8.1.78 ``` 2. **ABI兼容检测**: ```python from numpy.core._multiarray_umath import __cpu_features__ # 无报错则ABI正常 ``` ---
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值