无法从scipy._lib._util导入_FunctionWrapper的问题求助
问题描述
我正在尝试将WAV文件转换为MEI频谱图,使用的代码如下:
import glob import librosa import mei # Create an empty list to store the spectrograms spectrograms = [] # Set the directory containing the WAV files mydir = "/content/drive/My Drive/Musical Classification/gtzan-fixed/Data/genres_original/disco" # Get a list of all WAV files in the directory file_list = glob.glob(mydir + "/*.wav") # Iterate over all WAV files in the list for file in file_list: # Load the WAV file data, sample_rate = librosa.load(file, sr=None) # Create the MEI spectrogram spectrogram = mei.mei(data, sample_rate, 512) # Add the spectrogram to the list spectrograms.append(spectrogram)
运行代码时触发ImportError,报错信息为:
ImportError: cannot import name '_FunctionWrapper' from 'scipy._lib._util'
错误发生在导入librosa库的环节,我已尝试卸载并重装相关库,但问题仍未解决,恳请协助。
解决方案
这个错误源于librosa与scipy版本不兼容:_FunctionWrapper是旧版scipy的模块,新版scipy已移除该内容,而你的librosa版本依赖这个模块。可以通过以下几种方式解决:
安装兼容的scipy版本
卸载当前scipy后,安装与librosa版本匹配的旧版scipy。例如librosa 0.9.x系列适配scipy 1.7.x:pip uninstall scipy -y pip install scipy==1.7.3若使用librosa 0.8.x,可选择scipy 1.5.x或1.6.x版本。
用虚拟环境隔离依赖
避免全局环境的版本冲突,创建虚拟环境后重新安装所有依赖:python -m venv mei_env # Windows激活环境 mei_env\Scripts\activate # Linux/macOS激活环境 source mei_env/bin/activate # 安装指定版本的依赖包 pip install librosa==0.9.2 scipy==1.7.3 mei升级librosa到最新兼容版
若项目允许升级librosa,安装最新版即可适配新版scipy:pip install --upgrade librosa升级后重新运行代码,版本不兼容问题通常会被解决。
内容的提问来源于stack exchange,提问作者NoobWithPython
相关产品推荐
相关产品推荐

