2014-06-14 16 views
6

Ich führe ein Python-Skript durch einen Cronjob. Ich habe eine virtuelle Umgebung und im Cronjob durchlaufe ich diese virtuelle Umgebung. Wenn ich das Skript normal starte, startet phantomJS wie es sollte, aber wenn ich es durch ein Skript in einem Cronjob laufe, erhalte ich diesen Fehler. Was fehlt im Cronjob um Phantomjs starten zu können?PhantomJS von einem Skript in einem Cronjob starten

Message: 'Unable to start phantomjs with ghostdriver.' ; Screenshot: available via screen 
Traceback (most recent call last): 
    File "/home/scraper/superfish-extension/chrome_3day.py", line 96, in <module> 
    main() 
    File "/home/scraper/superfish-extension/chrome_3day.py", line 73, in main 
    browser = use_phantomjs() 
    File "/home/scraper/superfish-extension/chrome.py", line 81, in use_phantomjs 
    browser = webdriver.PhantomJS() 
    File "/home/scraper/.virtualenvs/superfish/lib/python2.6/site-packages/selenium/webdriver/phantomjs/webdriver.py", line 50, in __init__ 
    self.service.start() 
    File "/home/scraper/.virtualenvs/superfish/lib/python2.6/site-packages/selenium/webdriver/phantomjs/service.py", line 69, in start 
    raise WebDriverException("Unable to start phantomjs with ghostdriver.", e) 
WebDriverException: Message: 'Unable to start phantomjs with ghostdriver.' ; Screenshot: available via screen 

Antwort

12

Als Phantom wahrscheinlich in /usr/local/bin installiert ist, sollten Sie fügen hinzu, dass dir zu PATH in crontab. Die folgende Beschreibung ist der Trick:

SHELL=/bin/sh 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
3

Als Alternative zu akzeptierte Antwort, können Sie die folgende Zeile in der 1. Zeile von crontab hinzufügen:

PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs 

, die den Weg von PhantomJS gibt vor cron läuft Aufgaben.

1

, die den Trick für mich getan hat:

#!/bin/bash 
export DISPLAY=:0 
/usr/bin/phantomjs /home/pi/test.js 
+0

Warum dieser Code nur für Arbeit nicht beantworten? Erklärung benötigt – ppperry