У меня есть приложение для 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"
, но в моем случае это не работает?
Итак, два моих вопроса:
Как жестко закодировать путь ffprobe в pydub?
Как решить эту проблему без пути жесткого кодирования?