Есть ли способ преобразовать мою команду ffmpeg в программу python3, где пользователю не нужно уже устанавливать ffmpeg на свой компьютер?
Краткий ответ: нет.
План состоит в том, чтобы в конечном итоге превратить это в свой собственный пакет пипсов, и меня беспокоит то, что, если я буду использовать метод А, будет может быть случай, когда кто-то пытается запустить мою команду pip, но на его терминале не установлена программа ffmpeg (возможно, с использованием терминала python3 speci c?)
Вы должны добавить проверку во время шаг установки, чтобы убедиться, что пользователь / система имеет двоичный файл ffmpeg
на своем пути, и, если нет, выдать ошибку (и указать пользователю URL-адрес с инструкциями по установке ffmpeg). Не существует «лучшего» способа сделать это, это зависит от того, как вы устанавливаете программу пользователем. Вот три варианта:
Makefile
Если вы используете Makefile, вы можете добавить что-то вроде этого в начало Makefile:
ifeq ($(shell which ffmpeg),)
$(error Please install ffmpeg using "apt-get install ffmpeg")
endif
Это будет ошибка перед выполнением любых команд make
, если двоичный файл ffmpeg
не установлен.
только setup.py
Если вы используете только один файл setup.py
без Makefile , вы можете добавить что-то вроде этого в верхней части вашего setup.py
(до того, как вы позвоните setup()
):
import subprocess
try:
subprocess.run(["ffmpeg","--help"], check=True)
except subprocess.CalledProcessError:
print('Please install ffmpeg using "apt-get install ffmpeg"')
conda
Это на самом деле один из случаев использования conda , которая предназначена для того, чтобы предоставить пользователям простой инструмент для установки вещей (например, pip), но также иметь возможность создавать и устанавливать не-1044 * двоичные файлы (в отличие от pip). Вы можете видеть, что ffmpeg доступен через conda:
$ conda search ffmpeg
Loading channels: done
# Name Version Build Channel
ffmpeg 3.4 h766ddd1_0 pkgs/main
ffmpeg 3.4 h8a2ae75_0 pkgs/main
ffmpeg 4.0 h01ea3c9_0 pkgs/main
ffmpeg 4.0 hc84425e_0 pkgs/main
ffmpeg 4.2 h677a3f5_0 pkgs/main
, поэтому вместо того, чтобы упаковать свою программу и сделать ее доступной в Pypi, вы можете вместо этого создать рецепт conda. Подробности смотрите в создании рецептов conda , но в основном вы должны указать ffmpeg в качестве требования в файле meta.yml
:
requirements:
host:
- ffmpeg 4.2.*