Скрипт Python аварийно завершает работу при вызове из crontab

У меня есть скрипт (размещенный на дроплете DigitalOcean ubuntu 18.04.3), который выполняется из crontab и выглядит примерно так:

0 5 * * * cd /home/john/clips/; /home/john/clips/venv/bin/python3 /home/john/clips/clip_compilator.py

И это работает, но как только он достигает следующей строки внутри одного из скриптов

name = mp.TextClip(f"John".upper(), 
    color='#6441A4', 
    stroke_color="black", 
    align='West',
    fontsize=90, 
    font='BigNoodleTitling', method='label')\
                        .margin(left=95, opacity=0)\
                        .set_position(("left", "top"))

он падает с

Traceback (most recent call last):
  File "/home/john/clips/venv/lib/python3.6/site-packages/moviepy/video/VideoClip.py", line 1161, in __init__
    subprocess_call(cmd, logger=None)
  File "/home/john/clips/venv/lib/python3.6/site-packages/moviepy/tools.py", line 46, in subprocess_call
    proc = sp.Popen(cmd, **popen_params)
  File "/usr/lib/python3.6/subprocess.py", line 729, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'unset': 'unset'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/john/clips/clip_compilator.py", line 44, in <module>
    current_clip.add_videofile(add_text(current_clip))
  File "/home/john/clips/clip_editor.py", line 16, in add_text
    fontsize=90, font='BigNoodleTitling', method='label')\
  File "/home/john/clips/venv/lib/python3.6/site-packages/moviepy/video/VideoClip.py", line 1170, in __init__
    raise IOError(error)
OSError: MoviePy Error: creation of None failed because of the following error:

[Errno 2] No such file or directory: 'unset': 'unset'.

.This error can be due to the fact that ImageMagick is not installed on your computer, or (for Windows users) that you didn't specify the path to the ImageMagick binary in file conf.py, or that the path you specified is incorrect

Когда я запускаю ту же команду в bash (вне crontab), все работает нормально.
По какой-то причине происходит сбой именно на TextClip, и я не знаю почему.
Некоторые предположили, что решение может заключаться в комментировании. конкретная строка в policy.xml ImageMagick, но мой вывод convert -list policy таков:

введите здесь описание изображения


person Tristo    schedule 22.11.2019    source источник
comment
Существует ли двоичный файл unset, распространяемый с помощью ImageMagick? (На самом деле это больше похоже на то, что он полагается на unset команду оболочки..? Если так, может быть, есть другая оболочка по умолчанию, которая несовместима.. как выглядит исходный код? :D)   -  person user2864740    schedule 22.11.2019
comment
@ user2864740 Вы имеете в виду исходный код скрипта Python или crontab?   -  person Tristo    schedule 22.11.2019
comment
Код, который использует/пытается использовать unset.   -  person user2864740    schedule 22.11.2019
comment
Независимо от того, что такое /bin/sh (указывает на)? Если это не bash, возможно, стоит попробовать и сделать так... сделав несколько предположений о том, что делает базовый код.   -  person user2864740    schedule 22.11.2019
comment
@user2864740 user2864740 Я обновил полный код ошибки, я мог бы также обновить исходный код, но я отлаживал его часами, и строка прямо над обсуждаемой строкой печатается нормально, но дальше этого не идет.   -  person Tristo    schedule 22.11.2019
comment
@user2864740 user2864740 Извините за то, что я такой новичок, но как мне проверить, куда указывает /bin/sh?   -  person Tristo    schedule 22.11.2019
comment
askubuntu.com/questions/328364/ - используйте ls -l /bin/sh, чтобы показать, на что он указывает. Повторная ссылка на другое место — это глобальное изменение. Кроме того, если указанная цель поддерживает unset, я бы оставил ее в покое (см. соответствующее руководство).   -  person user2864740    schedule 22.11.2019
comment
@ user2864740 Я запустил его, и он сказал lrwxrwxrwx 1 root root 4 Oct 21 15:48 /bin/sh -> dash . Повлияет ли изменение его на bash на ошибку unset?   -  person Tristo    schedule 23.11.2019


Ответы (1)


Решил проблему добавлением

from moviepy.config import change_settings
change_settings({"IMAGEMAGICK_BINARY": "/usr/local/bin/convert"})

в начало clip_editor.py, где была строка, вызвавшая ошибку согласно tomasdms решение

person Tristo    schedule 22.11.2019