Как я могу использовать 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, хотя он прекрасно работает в вашем терминале. Обычно это проблема с окружением. Несколько вещей, которые вы можете проверить, это,

  1. PATH, который использует Django, может не включать /usr/bin. Вы можете исправить это, добавив его вручную в ваш код, например import os os.environ['PATH'] += os.pathsep + '/usr/bin'
  2. Вы можете использовать полный путь вместо.exiftool_path = "/usr/bin/exiftool"
  3. Я думаю, что вы уже перезапускали сервер после установки.

Здесь приведен пример кода, в который я добавил пример полного пути.

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
]

. . . .

Вернуться на верх