Хобрук: Ваш путь к мастерству в программировании

pyinstaller и moviepy, ffmpeg работает с терминала, но не с Finder

Я упаковываю python с помощью pyinstaller 2.1 на OSX Mavericks. Раньше я делал это успешно, но это мой первый пакет, который использует moviepy и ffmpeg. Я использую следующий импорт:

from moviepy.video.io import ffmpeg_reader

Без этой строки в коде все работает нормально, и я могу запустить свой последний пакет с его значка в поисковике. С импортом moviepy он будет работать, если я запускаю с терминала следующим образом:

open ./myapp.app

но он не откроется, если я нажму на значок в поисковике (быстро открывается и вылетает). Я предполагаю, что это как-то связано с путями или переменными среды, которые установлены в терминале, но не передаются в мое упакованное приложение. Я пробовал различный скрытый импорт в pyinstaller для moviepy и его зависимостей, но, похоже, ничего не работает. --debug mode не предоставил много информации для его отслеживания. Есть другие идеи?

Спасибо!


Ответы:


1

Есть несколько проблем с moviepy и pyinstaller.

Сначала попробуйте записать ошибку в текстовый файл

try:
    from moviepy.video.io import ffmpeg_reader
except Exception as e:
    with open('/absolute/path/to/error.txt',mode="w+") as f:
        f.write(str(e))

1) Вам может потребоваться изменить эти два файла, чтобы удалить операторы импорта "exec".

moviepy / audio / fx / all / __ init__.py, moviepy / video / fx / all / __ init__.py

см. здесь: https://github.com/pratikone/videoVenom/blob/master/moviepy/audio/fx/all/__init__.py https://github.com/pratikone/videoVenom/blob/master/moviepy/video/fx/all/__init__.py

2) Вам может понадобиться этот оператор imageio.plugins.ffmpeg.download(), чтобы ffmpeg загружался, если не найден.

24.06.2017
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..