Как я могу использовать exiftool в django?
Я купил свой первый VPS-сервер и установил на нем систему ubuntu. Я установил exiftool через 'sudo apt install exiftool' и когда я говорю команду, которая exiftool все в порядке, я получаю ответ /usr/bin/exiftool. После этого я пытаюсь сделать функцию для изменения тегов фотографии в django, но django, как мне кажется, не видит exiftool и ничего не добавляется. Кто-нибудь знает, что я могу сделать? Я пытаюсь исправить это уже около 5 часов :D
import subprocess
def set_jpeg_metadata_exiftool():
exiftool_path = "exiftool"
title = "Title"
subject = "Subject"
author = "Me"
comment = "Comment"
rating_val = 5
copyright_val = "Company name"
keywords = 'test'
cmd = [
exiftool_path,
f'-Title={title}',
f'-Subject={subject}',
f'-Author={author}',
f'-Comment={comment}',
f'-Rating={rating_val}',
f'-Copyright={copyright_val}',
f'-Keywords={keywords}',
'-overwrite_original',
file_path
]
subprocess.run(cmd, check=True, encoding='utf-8')
Похоже, что Django не может найти exiftool, хотя он прекрасно работает в вашем терминале. Обычно это проблема с окружением. Несколько вещей, которые вы можете проверить, это,
- PATH, который использует Django, может не включать /usr/bin. Вы можете исправить это, добавив его вручную в ваш код, например
import os os.environ['PATH'] += os.pathsep + '/usr/bin'
- Вы можете использовать полный путь вместо.
exiftool_path = "/usr/bin/exiftool"
- Я думаю, что вы уже перезапускали сервер после установки.
Здесь приведен пример кода, в который я добавил пример полного пути.
import subprocess
def set_jpeg_metadata_exiftool(file_path): exiftool_path = «/usr/bin/exiftool» # Полный путь к exiftool
title = "Title"
subject = "Subject"
author = "Me"
comment = "Comment"
rating_val = 5
copyright_val = "Company name"
keywords = "test"
cmd = [
exiftool_path,
f'-Title={title}',
f'-Subject={subject}',
f'-Author={author}',
f'-Comment={comment}',
f'-Rating={rating_val}',
f'-Copyright={copyright_val}',
f'-Keywords={keywords}',
'-overwrite_original',
file_path
]
. . . .