J'ai du mal à exécuter le script a python en tant que tâche cron.

Je suis connecté en tant que root, l'autorisation pour le script python est

-rwxr-xr-x 1 root root 2374 Mar  1 22:49 k_collab_spark.2.py

Je commence le script avec

#!/usr/bin/env python

J'ai testé le script pythong si je le fais ". / K_collab_spark.2.py` cela fonctionne très bien.

Sur le crontab j'ai mis le travail comme

15 12 * * * /opt/lampp/htdocs/testme/SPARK/k_collab_spark.2.py >> /var/log/kspark.log

Je ne vois aucun message sur le fichier journal

Une fois que j'ajoute 2> & 1, il donne une erreur Traceback (dernier appel le plus récent): Fichier "/opt/lampp/htdocs/kabeer/SPARK/k_collab_spark.2.py", ligne 2, dans les demandes d'importation ImportError: Aucun module nommé requêtes mais si j'exécute le service manuellement, il réussit. QUAND je l'exécute manuellement, cela fonctionne bien

J'ai essayé de définir le chemin mais toujours le même problème

PATH = / usr / local / sbin: / usr / local / bin: / sbin: / bin: / usr / sbin: / usr / bin demandes d'importation ImportError: aucun module nommé demandes

Toute idée de ce qui me manque .. Appréciez toute aide à ce sujet.

1
NKB 5 mars 2016 à 04:15

3 réponses

Meilleure réponse

J'ai utilisé un script shell pour appeler le script python. L'anaconda sur la boîte causait le problème

Export PATH = / opt / anaconda3 / bin: $ PATH / opt / anaconda3 / bin / python /opt/lampp/htdocs/scriptme.py> /opt/lampp/htdocs/scriptme.log 2> & 1

0
NKB 30 mars 2016 à 01:13

Essayez d'exécuter le script avec une autre première ligne:

#!/usr/bin/python

S'il exécute correctement le problème dans l'interpréteur python, car lorsque vous avez plusieurs versions de Python installées, / usr / bin / env garantira que l'interpréteur utilisé - est le premier sur $ PATH de votre environnement , qui je suppose que n'a aucune demande lib .

1
Andriy Ivaneyko 5 mars 2016 à 04:38

Ajoutez les lignes de code suivantes à votre script et modifiez la crontab:

from distutils.sysconfig import get_python_lib
print(get_python_lib())

Maintenant, vérifiez le journal dans crontab, vous obtiendrez un chemin

e.g. "/usr/lib/python2.7/dist-packages"

cd (changer de répertoire) sur le chemin ci-dessus et ls (répertoire de liste) pour vérifier si le package existe; sinon :

sudo pip3 install requests -t . # dot indicates current directory 

Ou bien si vous avez un fichier requirements.txt , vous pouvez essayer:

sudo pip3 install -r requirements.txt -t "/usr/lib/python2.7/dist-packages" 
#try this from the directory where  "requirements.txt" file exists

Exécutez maintenant vos scripts.

0
DeWil 8 oct. 2018 à 07:36