AttributeError: module ‘numpy‘ has no attribute ‘typeDict‘

文章讲述了在Python代码中遇到关于numpy和scipy版本不兼容导致的错误,通过追踪发现scipy从1.10.1升级到了1.4.1引发问题。解决方法是回滚scipy版本或注意在不同深度学习环境(如PyTorch)间避免安装不必要的依赖。作者强调了定期环境备份和管理的重要性。
摘要由CSDN通过智能技术生成
Traceback (most recent call last):
  File "e:/python/scripts/airconditioner_01.py", line 4, in <module>
    from skimage.metrics import structural_similarity as ssim
  File "C:\Users\admin\.conda\envs\sdm\lib\site-packages\skimage\metrics\__init__.py", line 1, in <module>
    from ._adapted_rand_error import adapted_rand_error
  File "C:\Users\admin\.conda\envs\sdm\lib\site-packages\skimage\metrics\_adapted_rand_error.py", line 2, in <module>
    from ._contingency_table import contingency_table
  File "C:\Users\admin\.conda\envs\sdm\lib\site-packages\skimage\metrics\_contingency_table.py", line 1, in <module>
    import scipy.sparse as sparse
  File "C:\Users\admin\.conda\envs\sdm\lib\site-packages\scipy\sparse\__init__.py", line 229, in <module>
    from .base import *
  File "C:\Users\admin\.conda\envs\sdm\lib\site-packages\scipy\sparse\base.py", line 8, in <module>
    from .sputils import (isdense, isscalarlike, isintlike,
  File "C:\Users\admin\.conda\envs\sdm\lib\site-packages\scipy\sparse\sputils.py", line 17, in <module>
    supported_dtypes = [np.typeDict[x] for x in supported_dtypes]
  File "C:\Users\admin\.conda\envs\sdm\lib\site-packages\scipy\sparse\sputils.py", line 17, in <listcomp>
    supported_dtypes = [np.typeDict[x] for x in supported_dtypes]
  File "C:\Users\admin\.conda\envs\sdm\lib\site-packages\numpy\__init__.py", line 320, in __getattr__
    raise AttributeError("module {!r} has no attribute "
AttributeError: module 'numpy' has no attribute 'typeDict'

使用原有代码,原来的环境,发现竟报错,大抵是后来环境发生了变化。

根据提示,是numpy的原因:

这个错误是由于在你的代码中导入的scipy库中的sparse模块中使用了numpy中不存在的typeDict属性引起的。

在较新的numpy版本中,typeDict属性已经被移除了。这个属性在旧版本的numpy中用于将字符串类型映射到相应的numpy数据类型。在较新的版本中,可以使用numpy.dtype函数来实现类似的功能。

要解决这个问题,你可以尝试以下几个方法:

  1. 升级你的numpyscipy库到最新版本,以确保你使用的是兼容的版本。

  2. 检查你的代码中是否有其他地方使用了旧版本的numpy特性,如果有的话,可以尝试更新这些部分的代码以适应新版本的numpy

  3. 如果你的代码中没有直接使用numpytypeDict属性的地方,那么可能是scikit-image库中的某个模块在使用了旧版本的numpy。你可以尝试更新scikit-image到最新版本,或者在代码中显式指定使用较新版本的numpy

总之,这个问题可能是由于使用不兼容的库版本或者旧版本的特性引起的。确保你的库版本是最新的,并检查代码中是否有使用了旧版本特性的地方。

也就是numpy的版本过旧, 但是根据之前环境的备份,numpy的版本未变。

然后循着调用踪迹,查看skimage(scikit-image),版本也未变,查看scipy,版本发现不同。原scipy为1.10.1版本,当前环境变成了1.4.1。将版本更新为1.10.1,报错消失。

可能是由于之前尝试在此环境安装tensorflow导致有些第三方包版本变了,追悔莫及,哭了,千万不要在pytorch环境安装tensorflow。。。

建议大家时常对环境备份,按照前面的文章“环境迁移”内容生成 environment.yaml或requirements.txt进行备份,轻松方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值