Может ли ImageMagick быть упакован с программой Python? Как это сделать? - PullRequest
1 голос
/ 02 октября 2019

Я колеблюсь между opencv, Pillow, ImageMagick, subprocess и ffmpeg как способ манипулирования графическими данными. ImageMagick выглядит хорошо и довольно мощно, но моя установка на Win 7 уже не запускает некоторые команды, потому что «нет делегата декодирования для этого формата изображения» - ошибка, вызванная неправильной установкой, установкой самой последней или неустановкойразличные другие зависимости, которые он может иметь некоторыми способами, которые остаются неясными даже после прочтения.

Так что, в основном с рабочей версией на моем компьютере, мне интересно, стоит ли тратить время и усилия на создание графического приложенияв Python с помощью команд ImageMagick, вызываемых с помощью подпроцесса? Если я создаю такое приложение, могу ли я включить в него ImageMagick, когда я собираюсь сделать 1 файл исполняемым для распространения или продажи? Если так, как я могу это сделать? Позволяют ли py2exe или pyinstaller включать ImageMagick (и ffmpeg в этом отношении)?

1 Ответ

1 голос
/ 02 октября 2019

Короткий ответ - нет.

В идеале вы должны отправить пакет Python с установочным сценарием, который проверит систему пользователя на наличие необходимых зависимостей, или, как минимум, документ, подтверждающий, как конечный пользователь может установитьзависимости, где их найти и почему они должны это делать.

Если я создаю такое приложение, могу ли я включить в него ImageMagick, когда я собираюсь сделать исполняемый файл из 1 файла для распространения или продажи?

Большинство зависимостей являются библиотеками(общий или статический), поэтому как минимум ваш «1 исполняемый файл» должен будет ссылаться на дополнительные файлы, которые вы будете распространять вместе с кодом Python. Это также сделало бы вас дистрибьютором смешанных лицензий на программное обеспечение, и вам необходимо было бы прочитать и выполнить соответствующие требования для каждой зависимой библиотеки.

Позволяет ли py2exe или pyinstaller включать ImageMagick (и ffmpeg в этом отношении))?

Они будут включать соответствующие файлы DLL для распространения, но не делегаты, используемые ImageMagick. Я думаю, что есть «портативная» версия ImageMagick, которая скомпилирована со статическими библиотеками и общими делегатами (включая ffmpeg). После В качестве примера приведем DLL-библиотеку времени выполнения Microsoft Visual C . Я предполагаю, что установка будет выглядеть следующим образом ...

from glob import glob
data_files = [("ImageMagick.CRT", glob(r'C:\path\to\ImageMagick-7.0.8-67-portable-Q16-x86\*.*'))]
setup(
  data_files=data_files,
)

И использовать подпроцесс для вызова magick.exe в распределенном каталоге "ImageMagick.CRT".

[. ..] Мне интересно, стоит ли тратить время и усилия на создание графического приложения на python [...]

Все это сводится к тому, что вы пытаетесь достичь. OpenCV & Pillow могут быть перечислены как зависимости в ваших приложениях setup.py, и установщик Python / Pip справится с этим. Однако ImageMagick и FFMPEG - это больше платформ (если не экосистем) с собственным уровнем настройки и расширений.

...