python-crontab und die Pfade
Habe ich ein Python-Treiber und library-Skripts, die Geschwister sind:
/home/mydir/pythonProjs/
-
driver.py
-
lib.py
In driver.py
ich habe die Zeile:
from lib import method1
Den folgenden Erfolg meine Befehlszeile unter Linux:
python /home/mydir/pythonProjs/driver.py
Aber wenn ich versuche, Folgendes in die crontab:
10 1 * * * export PYTHONPATH=~/mydir/pythonProjs; python /home/mydir/pythonProjs/driver.py
Bekomme ich die Fehlermeldung:
ImportError: No module named lib.method1
Habe ich auch versucht, ändern der path-Einstellung in meiner crontab Befehl aus, um den vollqualifizierten Pfad /home/mydir/pythonProjs
, weglassen der 'export', und haben auch versucht zu schreiben .sh-Dateien (mit der erforderlichen #!bin/bash...)
Habe ich eine Forschungsfrage und ein follow-up-Frage:
main: Was ist ein best-practice-Methode zur Behebung meines Problems?
follow-up: Was ist die Philosophie hinter cron mit anderen Pfad zuzugreifen, als meine shell?
Bevor ich runter gestimmt zu schnell, ich will noch erwähnen, dass ich die gelesen, aber nicht erfolgreich waren (oder richtig analysiert wird) die folgenden:
- Wo kann ich das setzen von Umgebungsvariablen, die crontab verwenden?
- Crontab Probleme läuft Python
- http://pythonadventures.wordpress.com/2012/03/31/calling-a-python-script-from-crontab/
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, zu drucken, aus environment-Variablen aus einem dummy-job
wie vorgeschlagen in https://askubuntu.com/questions/23009/reasons-why-crontab-does-not-work
Überprüfen Sie auch, was shell, crontab verwenden. Sie können die
$SHELL
Umgebungsvariablebash
durch hinzufügen einer ZeileSHELL=/bin/bash
am Anfang der crontab-Datei.
#!/usr/bin/env python
Seltsam, wenn ich weiß nicht die letzten und $ journalctl von zu Hause, dann sehe ich keine Fehler protokolliert, die von cron aber die driver.py nicht vollständig ausführen (z.B. scheint es nicht zu importieren lib.py). Danke auch für dieenv >
Vorschlag.SHELL=/bin/bash
und#!/usr/bin/env python
Lösung auf meinem eigenen? Was vielleicht ein paar "standard" - Referenzen über cron und/oder Python, die geführt haben könnte mich auf dem richtigen Weg?cron
nicht Lesen Benutzer " Umwelt-Variablen ist die Sicherheit. Standard-Referenz fürcron
ist die Unix-manual-Seite z.B. unix.com/man-page/linux/5/crontab Und schließlich, Fragen über "best practices" off-topic auf SO und trotzdem ich nicht haben eine gute Antwort.