如何解决 AttributeError: module 'numpy' has no attribute 'bool'?

the*_*eal 49 python numpy attributeerror python-3.x

我使用的是 conda 环境,Python 版本 3.9.7、pip 22.3.1、numpy 1.24.0、gluoncv 0.10.5.post0、mxnet 1.7.0.post2

from gluoncv import data, utils 给出错误:

C:\Users\std\anaconda3\envs\myenv\lib\site-packages\mxnet\numpy\utils.py:37: FutureWarning: In the future `np.bool` will be defined as the corresponding NumPy scalar.  (This may have returned Python scalars in past versions
  bool = onp.bool

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[1], line 3
      1 #import cv2
      2 #import os
----> 3 from gluoncv import data, utils #does not work

File ~\anaconda3\envs\myenv\lib\site-packages\gluoncv\__init__.py:16
     14 _found_mxnet = _found_pytorch = False
     15 try:
---> 16     _require_mxnet_version('1.4.0', '2.0.0')
     17     from . import data
     18     from . import model_zoo

File ~\anaconda3\envs\myenv\lib\site-packages\gluoncv\check.py:6, in _require_mxnet_version(mx_version, max_mx_version)
      4 def _require_mxnet_version(mx_version, max_mx_version='2.0.0'):
      5     try:
----> 6         import mxnet as mx
      7         from distutils.version import LooseVersion
      8         if LooseVersion(mx.__version__) < LooseVersion(mx_version) or \
      9             LooseVersion(mx.__version__) >= LooseVersion(max_mx_version):

File ~\anaconda3\envs\myenv\lib\site-packages\mxnet\__init__.py:33
     30 # version info
     31 __version__ = base.__version__
---> 33 from . import contrib
     34 from . import ndarray
     35 from . import ndarray as nd

File ~\anaconda3\envs\myenv\lib\site-packages\mxnet\contrib\__init__.py:30
     27 from . import autograd
     28 from . import tensorboard
---> 30 from . import text
     31 from . import onnx
     32 from . import io

File ~\anaconda3\envs\myenv\lib\site-packages\mxnet\contrib\text\__init__.py:23
     21 from . import utils
     22 from . import vocab
---> 23 from . import embedding

File ~\anaconda3\envs\myenv\lib\site-packages\mxnet\contrib\text\embedding.py:36
     34 from ... import base
     35 from ...util import is_np_array
---> 36 from ... import numpy as _mx_np
     37 from ... import numpy_extension as _mx_npx
     40 def register(embedding_cls):

File ~\anaconda3\envs\myenv\lib\site-packages\mxnet\numpy\__init__.py:23
     21 from . import random
     22 from . import linalg
---> 23 from .multiarray import *  # pylint: disable=wildcard-import
     24 from . import _op
     25 from . import _register

File ~\anaconda3\envs\myenv\lib\site-packages\mxnet\numpy\multiarray.py:47
     45 from ..ndarray.numpy import _internal as _npi
     46 from ..ndarray.ndarray import _storage_type, from_numpy
---> 47 from .utils import _get_np_op
     48 from .fallback import *  # pylint: disable=wildcard-import,unused-wildcard-import
     49 from . import fallback

File ~\anaconda3\envs\myenv\lib\site-packages\mxnet\numpy\utils.py:37
     35 int64 = onp.int64
     36 bool_ = onp.bool_
---> 37 bool = onp.bool
     39 pi = onp.pi
     40 inf = onp.inf

File ~\anaconda3\envs\myenv\lib\site-packages\numpy\__init__.py:284, in __getattr__(attr)
    281     from .testing import Tester
    282     return Tester
--> 284 raise AttributeError("module {!r} has no attribute "
    285                      "{!r}".format(__name__, attr))

AttributeError: module 'numpy' has no attribute 'bool'
Run Code Online (Sandbox Code Playgroud)

Yin*_*_90 43

我遇到了同样的错误...

最后,对我有用的组合是:

pip3 install mxnet-mkl==1.6.0 numpy==1.23.1
Run Code Online (Sandbox Code Playgroud)


wil*_*eng 24

添加到这篇文章是因为 @Yinon_90 的回答在不同的背景下帮助了我

设置

  • 从您的终端:
conda create -n conda-env python=3.8 -y
conda activate conda-env
(conda-env) python -m pip install -e .
Run Code Online (Sandbox Code Playgroud)

numpyversion 1.24.1已安装

  • requirements.txt内容:
coremltools
diffusers[torch]
torch
transformers
scipy
Run Code Online (Sandbox Code Playgroud)

解决方案 --> 降级 numpy

coremltools
diffusers[torch]
torch
transformers
scipy
Run Code Online (Sandbox Code Playgroud)


Tia*_*ica 19

正如我们在NumPy 1.20.0 发行说明中看到的

不推荐使用内置类型的别名,例如np.int

(不仅如此,np.int而且np.bool……)

然后,在版本NumPy 1.24.0中,已弃用的内容np.bool被完全删除。这意味着您正在使用的 NumPy 版本删除了已弃用的方法,并且您正在使用的库未更新以匹配该版本(使用类似的内容np.bool而不是仅使用bool)。

您可以使用旧版本numpy(删除之前),但该问题尚未修复。@sirViv 指出最新的是 1.23.5。

  • 总而言之,旧版“np.bool”的最新版本似乎是“NumPy 1.23.5” (2认同)

Jos*_*osé 15

numpy.bool 已弃用。建议降级到1.23.1版本。作为遗留,有 numpy.bool_ (带下划线)。对我有帮助的一个技巧是执行以下操作:

import numpy as np
np.bool = np.bool_
Run Code Online (Sandbox Code Playgroud)

它很脏,但对我有用。


rog*_*osh 4

这在 中随处可见mxnet。它是候选版本(所以,前沿),与您正在使用的版本1.7.0v2.0.0相同。

我不太清楚的是,什么时候这不再是numpy. 它没有列在当前的标量类型中。但是,让我们跳回到 2019 年,在您正在使用1.18numpy版本发布之前,使用 的版本-此处。它甚至不是一个类型!mxnet

这里最令人困惑的是,它已经存在utils.py,您可能会期望这样的模块会因为这个问题而到处爆炸,因为这将是一个核心模块……但事实并非如此。我不确定我在这里缺少什么,但可能值得在他们的 github 上提出。