使用最新版scikit-video与numpy加载视频遇np.float属性错误问询
scikit-video 1.1.11 与 NumPy 1.26.1 兼容问题
环境与复现代码
已安装版本:
- scikit-video=1.1.11(最新版)
- numpy=1.26.1(最新版)
执行视频加载代码:
import skvideo.io skvideo.io.vread('video_path.mp4')
报错信息
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/user/anaconda3/envs/snb/lib/python3.10/site-packages/skvideo/io/io.py", line 144, in vread reader = FFmpegReader(fname, inputdict=inputdict, outputdict=outputdict, verbosity=verbosity) File "/home/user/anaconda3/envs/snb/lib/python3.10/site-packages/skvideo/io/ffmpeg.py", line 44, in __init__ super(FFmpegReader,self).__init__(*args, **kwargs) File "/home/user/anaconda3/envs/snb/lib/python3.10/site-packages/skvideo/io/abstract.py", line 87, in __init__ if np.float(parts[1]) == 0.: File "/home/user/anaconda3/envs/snb/lib/python3.10/site-packages/numpy/__init__.py", line 324, in __getattr__ raise AttributeError(__former_attrs__[attr]) AttributeError: module 'numpy' has no attribute 'float'. `np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here. The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations. Did you mean: 'cfloat'?
已知将NumPy降级至1.23.5后错误消失,且np.float在NumPy 1.20中被弃用,1.24版本中被彻底移除。
问题解答
1. 为何scikit-video最新版本未修复该问题?
scikit-video项目维护活跃度较低,1.1.11版本的代码未及时跟进NumPy的API变更。np.float这类废弃API的清理需要维护者主动更新代码,若项目缺乏持续维护,就会出现新版本仍残留旧API调用的情况。
2. 是否无法使用最新版NumPy搭配scikit-video?
官方发布的scikit-video 1.1.11确实无法直接兼容NumPy 1.24及以上版本,但有两种可行方案:
- 临时降级NumPy到1.23.x版本(如1.23.5),确保API兼容;
- 手动修改scikit-video源码:找到
skvideo/io/abstract.py第87行,将np.float(parts[1])替换为float(parts[1])或np.float64(parts[1]),保存后即可正常使用最新版NumPy。
内容的提问来源于stack exchange,提问作者Nagabhushan S N
相关产品推荐
相关产品推荐

