Я выполняю немного сервера человечности (версия 18.04)
Прежде, чем обновить до 18,04 крон выполнялся очень хорошо.
Это - мой crontab (sudo crontab -e
) :
*/5 * * * * PYTHONPATH=/usr/bin/python3 /usr/bin/python3 /home/louis/backup-server/main.py >> /var/log/MYbackup.log 2>&1
Но когда крон запускается, следующее зарегистрировано:
Traceback (most recent call last):
File "/home/louis/backup-server/main.py", line 7, in <module>
import config.config as config
File "/home/louis/python_helpers/config/config.py", line 2, in <module>
from dotenv import load_dotenv
ModuleNotFoundError: No module named 'dotenv'
однако, если я работаю sudo python3 /home/louis/backup-server/main.py
сценарий правильно выполняется
Я действительно работал sudo pip install python-dotenv
Содержание сценариев:
# /home/louis/backup-server/main.py
# permissions : -rwxr-xr-x
import os
import requests
import json
import datetime
import sys
sys.path.insert(0, '/home/louis/python_helpers')
import config.config as config
import mail
import utils
def main():
# some code
if __name__ == "__main__":
main()
--
# /home/louis/python_helpers/config/config.py
# permissions : -rwxr-xr-x
import os
from dotenv import load_dotenv
dotenv_path = os.path.join(os.path.dirname(__file__), '.env')
load_dotenv(dotenv_path)
# some config var
Я действительно имею __init__.py
файл в /home/louis/python_helpers/config
, сообщите мне, должен ли для получения информации я добавить.
Что прослушивает меня, большинство то, что скрипты, запущенные очень хорошо, если запущено вручную, но не как крон.
Редактирование: Я был не уверен, принадлежит ли этот вопрос здесь или на stackoverflow, поэтому скажите мне, если я должен переместить его (даже при том, что я не знаю как около создания нового вопроса),
Хорошо проблема была довольно немой, я действительно работал pip install python-dotenv
и sudo pip install python-dotenv
(сценарий должен базироваться разрешение получить доступ к некоторой папке), но я не сделал sudo -H pip install python-dotenv
.
После выполнения этой команды крон выполняется очень хорошо.
Проблемой является, вероятно, эта часть:
PYTHONPATH=/usr/bin/python3
потому что PYTHONPATH должен указать туда, где Ваши библиотеки. Что происходит, если Вы удаляете ту часть crontab?
для каждого пользователя, которого Вы используете для заданий крона, необходимо сделать pip install your-library
. Поскольку крон использует среду, пользователь которой выполняет задание.