【Anaconda-Error】'numpy.ufunc' object has no attribute '__module__'

本文详细记录了解决MXNet与Numpy版本冲突的问题,通过调整两个库的安装顺序和指定Numpy版本,成功运行了测试程序。对于遇到类似问题的开发者,提供了具体的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行mxnet的测试程序的时候报错如下:

Traceback (most recent call last):
  File "test_rec.py", line 4, in <module>
    import face_model
  File "/media/luckynote/Tool/face-recognition-dl/face_recognition_insightface/face_model.py", line 20, in <module>
    import face_preprocess
  File "/media/luckynote/Tool/face-recognition-dl/face_recognition_insightface/face_preprocess.py", line 4, in <module>
    from skimage import transform as trans
  File "/home/luckynote/anaconda3/envs/retinaface/lib/python2.7/site-packages/skimage/__init__.py", line 168, in <module>
    from .util.dtype import (img_as_float32,
  File "/home/luckynote/anaconda3/envs/retinaface/lib/python2.7/site-packages/skimage/util/__init__.py", line 6, in <module>
    from .apply_parallel import apply_parallel
  File "/home/luckynote/anaconda3/envs/retinaface/lib/python2.7/site-packages/skimage/util/apply_parallel.py", line 8, in <module>
    import dask.array as da
  File "/home/luckynote/.local/lib/python2.7/site-packages/dask/array/__init__.py", line 8, in <module>
    from .routines import (take, choose, argwhere, where, coarsen, insert,
  File "/home/luckynote/.local/lib/python2.7/site-packages/dask/array/routines.py", line 256, in <module>
    @wraps(np.matmul)
  File "/home/luckynote/anaconda3/envs/retinaface/lib/python2.7/functools.py", line 33, in update_wrapper
    setattr(wrapper, attr, getattr(wrapped, attr))
AttributeError: 'numpy.ufunc' object has no attribute '__module__'

经查找是numpy的版本问题。

但mxnet通常与numpy是有版本关联的,因此,先卸载mxnet,再卸载numpy,

而后先安装numpy " pip install numpy==1.14.0 ",再安装mxnet “ pip install mxnet-cu90”,大功告成。

注意:如果依旧出现上述问题,可以换个numpy版本再试试,高版本有可能出现上述问题 ,因而不建议使用最新版本。

### 关于 `numpy.ufunc` 对象的 `AttributeError` 当遇到 `'numpy.ufunc' object has no attribute '__module__'` 错误时,通常是因为试图访问 `ufunc` 对象上不存在的属性。这种错误可能源于对 NumPy 版本兼容性的误解或是代码逻辑中的不当操作。 #### 原因分析 NumPy 的通用函数(ufuncs)是一类特殊的方法,用于执行逐元素运算。这些方法并不公开某些内部属性给外部调用者,因此直接尝试获取像 `__module__` 这样的私有或保护成员会触发异常[^1]。 #### 解决方案 为了规避此问题,可以采取以下几种方式: - **避免直接访问未暴露的属性** 不应该直接尝试读取或修改任何以双下划线开头的属性,因为这些都是实现细节的一部分,在不同版本间可能会有所变化。对于想要了解某个 ufunc 来自哪个模块的需求,可以通过其他途径来满足,比如查阅官方文档确认特定功能所在的子包位置。 - **升级到最新稳定版 NumPy** 如果正在使用的库依赖较旧版本的 NumPy 并且存在已知缺陷,则考虑更新至最新的稳定发行版。新版本往往修复了许多 bug 和改进了 API 设计,从而减少此类冲突的可能性。 - **调整代码逻辑绕过该需求** 若确实需要判断某对象是否属于特定类型的 ufunc 或其所属模块的信息,建议重构代码以适应当前环境下的最佳实践。例如,通过捕获异常并提供替代行为,或者利用反射机制检查实例类型而不是具体属性的存在性。 ```python import numpy as np def get_ufunc_module(ufunc): """安全地返回 ufinc 所属模块名称""" try: # 正常情况下不推荐这样做;这里仅作为示例展示如何处理潜在异常 return ufunc.__class__.__module__ except AttributeError: # 当无法获得 __module__ 属性时给出默认值或其他适当响应 return "unknown" # 测试例子 addition = np.add print(get_ufunc_module(addition)) # 输出可能是 'numpy.core.umath' ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十四桥下一句

您的鼓励是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值