python-3.x - pydub 没有找到 ffprobe
问题描述
我有一个用于 MacOS 的应用程序,它是用py2app
. 该应用程序使用pydub
模块,后者使用 ffmpeg 系列包。
问题是,一旦我编译了应用程序并将其移动到不同的操作系统,subprocess
即使pydub
它们ffmpeg
安装在/usr/local/bin
.
如果我从终端启动应用程序,./Nameapp.app/Contents/MacOs/Nameapp
那么它运行没有问题,但如果我双击启动它,则会pydub
抱怨找不到包并且应用程序挂起ffmpeg/ffprobe
应该在哪里工作。
我可以看到只有从终端启动时才会进行pydub
搜索/usr/local/bin
,否则不会。如果我添加/usr/local/bin
到PATH
,pydub
不再抱怨它没有找到 ffmpeg/ffprobe,但它仍然给我一个 ffmpeg 和 ffprobe: 的错误 [Errno 2] No such file or directory:
。
如果我硬编码路径pydub.AudioSegment.converter = "/usr/local/bin/ffmpeg"
,应用程序只会给我 ffprobe 错误[Errno 2] No such file or directory:'ffprobe': 'ffprobe'
。
在我见过的其他一些帖子上pydub.AudioSegment.ffprobe = "/path/to/ffprobe"
,但它似乎不适用于我的情况?
所以我的两个问题是:
如何在pydub中硬编码ffprobe路径?
如何在没有硬编码路径的情况下解决这个问题?
解决方案
出于某种原因,它在将 shell 更改为 zsh 时起作用...切换回 bash no。对这个解决方案不是很满意,但确实是这样
推荐阅读
- python - 匹配多个列忽略熊猫中的顺序
- php - PHP\Laravel 中的符号链接问题
- processing - 修复使用 image() 时的空指针异常;进行中
- javascript - 将 fetch() 数据保存到数组变量以在另一个外部函数中使用
- c - 如何在没有 malloc 的情况下使用交换功能?
- ansible - 在 Ansible 中连接 NXOS 模块时出现问题:列表索引超出范围
- linux - Linux 上的 FT_SetEventNotification
- python - 添加作为字符串传递的浮点数
- gcc - 我应该如何让 gcc 在进入函数的途中将堆栈指针重新对齐到 16 字节边界?
- python - 为什么我的 if 语句不起作用,只是输出 else,一切正常到那里?