Боргматические ошибки задания cron с питоном `ModuleNotFoundError`

Я пытаюсь настроить ежедневную работу cron, которая выполняет резервное копирование некоторых файлов с помощью borgmatic , но я продолжаю получать ту же ошибку и не могу понять, как ее исправить.

Моя borgmatic версия:

$ borgmatic --version
1.3.0

Мой /etc/cron.daily/borgmatic файл:

#!/bin/bash
MAILTO="tomeraberbach@gmail.com"
PATH=$PATH:/usr/local/bin
PYTHONPATH=/home/tomeraberbach/.local/lib/python3.6/site-packages
/usr/local/bin/borgmatic

И его разрешения:

$ ls -l /etc/cron.daily/borgmatic
-rwxr-xr-x 1 root tomeraberbach 162 Apr  8 00:20 /etc/cron.daily/borgmatic*

Однако я продолжаю при выполнении задания появляется следующая ошибка:

/etc/cron.daily/borgmatic:
Traceback (most recent call last):
  File "/usr/local/bin/borgmatic", line 7, in <module>
    from borgmatic.commands.borgmatic import main
  File "/usr/local/lib/python3.6/dist-packages/borgmatic/commands/borgmatic.py", line 22, in <module>
    from borgmatic.config import checks, collect, convert, validate
  File "/usr/local/lib/python3.6/dist-packages/borgmatic/config/convert.py", line 3, in <module>
    from ruamel import yaml
ModuleNotFoundError: No module named 'ruamel'
run-parts: /etc/cron.daily/borgmatic exited with return code 1

Это происходит только в задании cron. Runnning borgmatic обычно работает нормально.

Кроме того, пакет ruamel определенно установлен:

$ ls /home/tomeraberbach/.local/lib/python3.6/site-packages/ruamel
yaml/

Есть идеи, почему это происходит? Я знаю, что cron работает в другой среде, но я не уверен, как решить эту проблему.

РЕДАКТИРОВАТЬ:

Изменение строки PYTHONPATH=/home/tomeraberbach/.local/lib/python3.6/site-packages на export PYTHONPATH=/home/tomeraberbach/.local/lib/python3.6/site-packages /usr/local/bin/borgmatic приводит к ошибке сценария по-другому:

/etc/cron.daily/borgmatic:
Traceback (most recent call last):
  File "/usr/local/bin/borgmatic", line 7, in <module>
    from borgmatic.commands.borgmatic import main
ModuleNotFoundError: No module named 'borgmatic'
run-parts: /etc/cron.daily/borgmatic exited with return code 1
1
задан 22 April 2019 в 03:37

1 ответ

Боргматический автор здесь. Похоже, что borgmatic установлен на системном уровне, а некоторые его зависимости установлены как ваш личный пользователь. Но задание borgmatic cron выполняется от имени пользователя root. Это фундаментальное несоответствие. Поэтому я рекомендую удалить любые боргматические зависимости как ваш личный пользователь и переустановить их как root согласно инструкциям здесь , с или без --user. Затем, когда вы запускаете задание cron от имени пользователя root, оно должно иметь правильные пути. Если нет, то вы можете попробовать добавить соответствующие пути к вашему PYTHONPATH, как предложено steeldriver выше. Потенциально добавляя пути с PYTHONPATH=$PYTHONPATH:/new/path, если необходимо, чтобы избежать замены существующих путей.

0
ответ дан 22 April 2019 в 03:37

Другие вопросы по тегам:

Похожие вопросы: