11
votes

Impossible d'importer le module Python MySQL lors de l'exécution d'un script à l'aide de crontab

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


0 commentaires

5 Réponses :


-1
votes

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


0 commentaires

21
votes

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/')


3 commentaires

Merci beaucoup! Comment puis-je savoir ce que le chemin du chemin MySQLDB est?


Faites-le comme des spectacles de tsutbu. importer le module de votre terminal où il fonctionne et tapez mysqldb .__ fichier __


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



8
votes

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'


1 commentaires

Merci beaucoup! Comment puis-je savoir ce que le chemin du chemin MySQLDB est?



3
votes

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__


0 commentaires

0
votes

Essayez d'exécuter

sudo -H pip install MySQLdb


0 commentaires