首页 > 解决方案 > 无法从“ffprobe”导入名称“FFProbe”

问题描述

背景: 我有以下代码,它应该导航到mp3files我的 mac 上的目录,然后将所有.mp3文件转换为.wav文件。

代码:

import os
from pydub import AudioSegment
from ffprobe import FFProbe

path = "/Users/my_username/Documents/uc_davis/Homework_Repos/classify-spotify/william/mp3files"
os.chdir(path)

audio_files = os.listdir()

for file in audio_files:
    name, ext = os.path.splitext(file)
    if ext == ".mp3":
       mp3_sound = AudioSegment.from_mp3(file)
       mp3_sound.export("{0}.wav".format(name), format="wav")

问题:
在 Jupyter Lab 中运行此代码后,我得到了

ImportError: cannot import name 'FFProbe' from 'ffprobe' (/Users/my_username/anaconda3/envs/my_environment_name/lib/python3.7/site-packages/ffprobe/__init__.py)

我尝试过的内容:
我已仔细检查我是否安装了正确的依赖项,并且 ImportError 引用的目录中确实包含正确的文件。

有没有人有任何建议我做错了什么?

标签: pythonpydub

解决方案


我曾经遇到过这个确切的问题,我去了:/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/,其中包含ffprobe.py(其中有FFProbe和东西)和__init__.py(其中有from ffprobe import FFProbe在里面)

简短版:基本上我通过添加括号将print x里面ffprobe.py的语句更改为语句,并将语句更改为print(x)from ffprobe import FFProbefrom .ffprobe import FFProbe

加长版:我拖拽ffmpeg.py进去修改__init__.py,逐渐修改到匹配ffprobe.py,直到发现问题。我注意到 ffmpeg 文件的初始化包含句点,所以我复制了它,然后开始在打印语句周围收到错误消息并修复这些错误消息。这是一张图片,左边是新的,中间是初始化的,右边是旧的,如果它有帮助的话......1


推荐阅读