Python-subprocess Aufruf wieder "Befehl nicht gefunden", " Terminal ordnungsgemäß ausgeführt wird
Ich versuche zu laufen gphoto2 von python, aber, ohne Erfolg. Es gibt einfach zurück, dass der Befehl nicht gefunden.
gphoto ist korrekt installiert, wie die Befehle funktionieren im Terminal.
p = subprocess.Popen(['gphoto2'], shell=True, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, executable='/bin/bash')
for line in p.stdout.readlines():
print line
p.wait()
/bin/bash: gphoto2: command not found
Ich weiß, dass es etwas komisch ist, über die osx-Terminal (app), sondern auch mein wissen über osx ist mager.
Irgendwelche Gedanken dazu?
BEARBEITEN
einiges geändert mein code, andere Fehler angezeigt
p = subprocess.Popen(['gphoto2'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout:
print line
raise child_exception
OSError: [Errno 2] No such file or directory
BEARBEITEN
full-path "/opt/local/bin/gphoto2'
aber wenn jemand darauf zu erklären, welche shell benutzt werden soll oder wie Sie sich in und in der Lage sein, um die gleiche Funktionalität haben..?
- Warum nutzen Sie nicht
subprocess.check_output()
oder Ausgang, die ganze Sache zu einer Zeit?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bei der Verwendung
shell = True
das erste argument zusubprocess.Popen
sollte ein string sein, nicht eine Liste:Jedoch mit
shell = True
sollten möglichst vermieden werden, da es ein Sicherheit Risiko (siehe Warnung).So verwenden Sie stattdessen
(Wenn
shell = False
oder wenn dieshell
parameter weggelassen wird, wird das erste argument sollte eine Liste.)gphoto2
?which gphoto2
am terminal zu finden, die den vollständigen Pfad.os.environ['PATH']
als verschiedenen runtime-env vielleicht anderen Pfad