Annoconda下ModuleNotFoundError: No module named ‘numba.decorators‘问题解决方法

1 问题描述

在annoconda下运行项目时,出现了如下错误:

Traceback (most recent call last):
  File "/opt/Wav2Lip-HD/inference.py", line 3, in 
    import scipy, cv2, os, sys, argparse, audio
  File "/opt/Wav2Lip-HD/audio.py", line 1, in 
    import librosa
  File "/root/anaconda3/envs/wav2lip/lib/python3.9/site-packages/librosa/__init__.py", line 13, in 
    from . import core
  File "/root/anaconda3/envs/wav2lip/lib/python3.9/site-packages/librosa/core/__init__.py", line 114, in 
    from .time_frequency import *  # pylint: disable=wildcard-import
  File "/root/anaconda3/envs/wav2lip/lib/python3.9/site-packages/librosa/core/time_frequency.py", line 10, in 
    from ..util.exceptions import ParameterError
  File "/root/anaconda3/envs/wav2lip/lib/python3.9/site-packages/librosa/util/__init__.py", line 73, in 
    from . import decorators
  File "/root/anaconda3/envs/wav2lip/lib/python3.9/site-packages/librosa/util/decorators.py", line 9, in 
    from numba.decorators import jit as optional_jit
ModuleNotFoundError: No module named 'numba.decorators'

2 问题分析

从报错中可以看出,在librosa中使用了numba,执行过程中找不到“numba.decorators”模块,

主要是因为librosa和numba的版本不匹配引起的。

可通过pip list查看已经安装的librosa和numba的版本

numba 在 0.50版本之后删除了 decorators 模块

(1)numba是什么

numba是一个用于编译Python数组和数值计算函数的编译器,这个编译器能够大幅提高直接使用Python编写的函数的运算速度。numba使用LLVM编译器架构将纯Python代码生成优化过的机器码,通过一些添加简单的注解,将面向数组和使用大量数学的python代码优化到与c,c++和Fortran类似的性能,而无需改变Python的解释器。

Numba的主要特性:

  • 动态代码生成 (在用户偏爱的导入期和运行期)
  • 为CPU(默认)和GPU硬件生成原生的代码
  • 集成Python的科学软件栈(Numpy)

(2)librosa是什么?

librosa是一个非常强大的Python语音信号处理第三方库。它提供了一系列功能强大的算法,可以实现音频信号的解析、合成、滤波、频谱分析、音频特征提取、音乐信息检索、语音识别等操作。常用于音频处理、语音识别、音乐信息检索等领域。

librosa的名称是“Python音频信号处理库”的缩写,它包含了Core IO and DSP(核心输入输出功能和数字信号处理)、Time and frequency conversion(时间和频率转换)、Pitch and tuning(音高和调音)、Deprecated(已弃用)等模块。其中,一些常用的专业名词包括采样率(sr)、帧移(hop_length)、连续帧之间的重叠部分(overlapping)等。

3 问题解决

pip install numba==0.56.4
pip install librosa==0.9.1

再次运行程序,错误已经解决

你可能感兴趣的:(python,numpy,开发语言)