2016-08-05 30 views
0

Ich bin ziemlich neu in Mac, tut mir leid, wenn das etwas sehr einfaches ist.Kann Casperjs nicht über Python auf Mac ausführen

Ich kann meine Javascript-Datei über Terminal mit dem Befehl ausführen:

casperjs myfile.js 

Allerdings möchte ich diesen Befehl durch Python-Skript auszuführen.

das ist, was ich habe:

pathBefore = os.getcwd() 
os.chdir("path/to/javascript/") 
cmd_output = subprocess.check_output(["casperjs click_email_confirm_link.js"], shell = True) 
os.chdir(pathBefore) 
print cmd_output 

die /bin/sh: casperjs: command not found

gibt Wie Sie sehen können, das Arbeitsverzeichnis funktioniert nicht ändern. ich kann nicht herausfinden, wie man/bin/sh casperjs erkennen, wäre jede Hilfe sehr

dank

EDIT klar sein: Das ist, wie mein Code sieht jetzt

Bash_profile Umgebungsvariable:

export PATH=$PATH:/usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs

.profile Umgebungsvariable:

export PHANTOMJS_EXECUTABLE="/usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs"

`try: 
    CASPER ='/usr/local/bin/casperjs' 
    SCRIPT = 'path/to/javascript/click_email_confirm_link.js' 
    params = CASPER + ' ' + SCRIPT 
    stdout_as_string = subprocess.check_output(params, shell=True) 
    print stdout_as_string 
except CalledProcessError as e: 
    print e.output` 

die Fehler zurückgibt:

Fatal: [Errno 2] No such file or directory; did you install phantomjs?

+0

Sie den vollständigen angeben Haben Sie versucht Pfad von casperjs ausführbar? – Railslide

+0

Geändert von "casperjs" zu "usr/local/Cellar/casperjs/1.1.3/bin/casperjs" und python gibt das zurück: "/ bin/sh: ./usr/local/Cellar/casperjs/1.1.3/libexec/ bin/casperjs: Keine solche Datei oder Verzeichnis " – Pythonicways

+0

Es sieht so aus, als hätten Sie den führenden Schrägstrich vergessen. Es sollte "/ usr/local/Cellar/casperjs/1.1.3/bin/casperjs" – Railslide

Antwort

0

mein Problem gelöst, indem diese drei Zeilen im Terminal eingeben: sudo ln -s /path/to/bin/phantomjs /usr/local/share/phantomjs sudo ln -s /path/to/bin/phantomjs /usr/local/bin/phantomjs sudo ln -s /path/to/bin/phantomjs /usr/bin/phantomjs

und mit Python Code:

commands = ''' 
pwd 
cd .. 
pwd 
cd shared/scripts/javascript 
pwd 
/usr/local/Cellar/casperjs/1.1.3/libexec/bin/casperjs click_email_confirm_link.js 
''' 

process = subprocess.Popen('/bin/bash', stdin=subprocess.PIPE, stdout=subprocess.PIPE) 
out, err = process.communicate(commands.encode('utf-8')) 
print(out.decode('utf-8')) 

auch folgende Dateien wurden wie folgt bearbeitet:

vi Bash_profile export PHANTOMJS_EXECUTABLE=/usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs export PATH=$PATH:/usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs

vi Bashrc + Quelle Bashrc export PHANTOMJS_EXECUTABLE=/usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs export PATH="/usr/local/Cellar/phantomjs/2.1.1/bin:$PATH"

vi .profile export PHANTOMJS_EXECUTABLE=/usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs export PATH="$PATH:/usr/local/Cellar/phantomjs/2.1.1/bin/phantomjs"