2017-09-24 4 views
0

Ich habe ein Web Scrapper-Skript, das ohne Probleme läuft, wenn ich über die Befehlszeile starte. Ich habe einen crontab Job erstellt dieses Skript auszuführen regelmäßig mit:Python Sudo Cron Job funktioniert nicht wegen Import Modul Fehler

sudo crontab -e 

Nach Syslog-Meldung Skript gestartet, aber es gab keine erwartete Ausgabe, so dass ich erstellt eine Protokolldatei für stdout und stderr Nachrichten und es scheint eine zu sein Problem mit BeautifulSoup-Modulimport.

import BeautifulSoup 
ImportError: No module named bs4 

Haben Sie eine Idee, was die Ursache sein könnte und wie ich es lösen kann?

BEARBEITEN Sie: Mein Problem wurde mit meinen crontabs verwandt, die von anderem Benutzer (Wurzel) ausgeführt werden. Also wie in der Antwort vorgeschlagen, wenn ich es zu eigenen Benutzer änderte, Problem gelöst!

+1

Sie können beautifulsoup für root-Benutzer installieren oder ein Shell-Skript erstellen. Fügen Sie Ihre Python-Bibliothek in der Umgebungsvariable 'PYTHONPATH' hinzu und führen Sie dann Ihr Skript aus. – Sraw

+0

Überprüfen Sie meine Antwort hier https://StackOverflow.com/a/13250716/75103 – thebjorn

+0

Mögliches Duplikat von [Crontab nicht Python-Skript ausführen] (https://StackOverflow.com/questions/13250365/contab-fails-to-execute -Python-Skript) –

Antwort

3

Das sudo infront von crontab bedeutet, dass root-Benutzer das Skript ausführt. Schöne Suppe ist nicht für Root-Benutzer installiert, so dass es das Modul nicht finden kann.

Stattdessen entfernen Sie die Anweisung von "sudo crontab -e" und dann ausführen und nur "crontab -e". Wenn Sie das Skript dort einfügen, wird es von Ihrem Benutzerkonto aus ausgeführt und sollte Zugriff auf das schöne Suppenmodul haben.