Python упаковывает не найденный в то время как рабочие задания крона даже после использования sudo установка зернышка

Вот моя команда crontab:

*/15 * * * * cd /home/ec2-user/SageMaker && /bin/bash /home/ec2-user/SageMaker/churn_end_to_end_pipeling_actionable.sh

В моей почте вот ошибки, которые я получаю:

Message-Id: <202002290600.01T608DE020009@ip-172-16-124-135.ec2.internal>
X-Authentication-Warning: ip-172-16-124-135.ec2.internal: ec2-user set sender to root using -f
From: root@ip-172-16-124-135.ec2.internal (Cron Daemon)
To: ec2-user@ip-172-16-124-135.ec2.internal
Subject: Cron <ec2-user@ip-172-16-124-135> cd /home/ec2-user/SageMaker && /bin/bash /home/ec2-user/SageMaker/churn_end_to_end_pipeling_actionable.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/ec2-user>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=ec2-user>
X-Cron-Env: <USER=ec2-user>

Traceback (most recent call last):
  File "feature_engineering.py", line 9, in <module>
    import seaborn as sns
ImportError: No module named seaborn
Traceback (most recent call last):
  File "generate_churn_outputs_actionable.py", line 5, in <module>
    from xgboost import XGBClassifier
ImportError: No module named xgboost

Я не уверен, почему я сталкиваюсь с этой ошибкой, так как я, имеют sudo -H pip install <package> прежде, чем выполнить задание крона.

Кроме того, вот, содержание моего сценария удара и сценариев Python, на которые это ссылается:

Bash:

#!/bin/bash

python feature_engineering.py 
python generate_churn_outputs_actionable.py 1

Сценарий 1 и 2:

#! /home/ec2-user/anaconda3/envs/JupyterSystemEnv/bin/python

Любая справка очень ценилась бы. Кроме того, если я пропускаю какие-либо детали, сообщите мне, и я добавлю его.

0
задан 29 February 2020 в 09:11

1 ответ

У меня была та же проблема о Ubuntu 18.04, и использование явного пути в crontab не работало. По некоторым причинам крон не работал, и sudo из моей учетной записи действительно работал. Я предположил бы, что они будут тем же, но увы, они не были. Я пришел к выводу, что это была проблема переменной среды.

Можно моделировать проблему крона в sudo путем выполнения следующего:

sudo bash -c "HOME=FOO;python3 -c \"import xgboost\""

Для меня фиксация должна была иметь вызов crontab сценарий оболочки, который затем выполняет сценарий Python. Также должен был установить ДОМОЙ и переменные среды PYTHONPATH:

crontab:

# Execute shell script and pipe stdout and stderr to a log file
# Which will enable you to see what's going on in real time
* * * * * <your_path>/yourscript.sh  >> <your_path>yourscript_cron.log 2>&1

yourscript.sh:

#!/bin/bash
echo yourscript.sh called: `date`
HOME=<your_home_dir>
PYTHONPATH=<path_to_dist_packages>
cd <path_to_your_python_script>
<python_executable> ./<your_python_script> 2>&1 1>/dev/null
0
ответ дан 17 March 2020 в 00:12

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

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