J'utilise Crontab pour exécuter un script Python qui nécessite le module mysqldb. Lorsque j'exécute ce script de la ligne de commande, tout fonctionne bien. Cependant, essayer de l'exécuter en utilisant Crontab elicite cette erreur.
Traceback (most recent call last): File "clickout.py", line 3, in <module> import MySQLdb ImportError: No module named MySQLdb
5 Réponses :
Le problème est que ce module n'est pas dans le chemin de recherche du module Python de l'utilisateur CronTab. Essayez de chercher ici: http://docs.python.org/Tutorial /modules.html#the-Module-Search-Path P>
Il se peut que vous utilisiez un exécutable différent de Python. Sur la coquille, entrez quel python code> pour savoir où se trouve l'exécutable Python. Disons que cela renvoie autre chose que
/ usr / bin / python code>, dites
/ home / myuser / bin / python code>, puis dans la première ligne de votre script, vous écririez :
import sys; sys.path.append('/path/to/MySQLdb-lib/')
Merci beaucoup! Comment puis-je savoir ce que le chemin du chemin MySQLDB est?
Faites-le comme des spectacles de tsutbu. importer code> le module de votre terminal où il fonctionne et tapez
mysqldb .__ fichier __ code>
Très utile, merci beaucoup. Dans mon cas, la bonne solution était la suivante: essayez de toujours utiliser le chemin absolu vers le binaire lors de la création d'un cronjob. Salutations
Définissez PythonPath en haut de votre crontab. La définition de toutes ces variables d'environnement (ci-dessous) peut vous aider à éviter des problèmes de cron courants relatives au manque de variables d'environnement:
>>> import MySQLdb >>> MySQLdb.__file__ '/usr/lib/pymodules/python2.7/MySQLdb/__init__.pyc'
Merci beaucoup! Comment puis-je savoir ce que le chemin du chemin MySQLDB est?
Définir le PythonPath à l'intérieur du crontab a travaillé pour moi, je suis d'abord entré Crontab en utilisant:
import library library.__file__
Essayez d'exécuter
sudo -H pip install MySQLdb