Welche Berechtigungen sind erforderlich für den Teilprozess.Popen?
Folgenden code:
gb = self.request.form['groupby']
typ = self.request.form['type']
tbl = self.request.form['table']
primary = self.request.form.get('primary', None)
if primary is not None:
create = False
else:
create = True
mdb = tempfile.NamedTemporaryFile()
mdb.write(self.request.form['mdb'].read())
mdb.seek(0)
csv = tempfile.TemporaryFile()
conversion = subprocess.Popen(("/Users/jondoe/development/mdb-export", mdb.name, tbl,),stdout=csv)
Ursachen, die diese Fehlermeldung beim aufrufen der letzten Zeile z.B. mit 'Umstellung =" in OS X.
Traceback (innermost last):
Module ZPublisher.Publish, line 119, in publish
Module ZPublisher.mapply, line 88, in mapply
Module ZPublisher.Publish, line 42, in call_object
Module circulartriangle.mdbtoat.mdb, line 62, in __call__
Module subprocess, line 543, in __init__
Module subprocess, line 975, in _execute_child
OSError: [Errno 13] Permission denied
Ich habe versucht chmod 777 /Users/jondoe/development/mdb-export
- was sonst noch erforderlich sein könnte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, dass die Berechtigungen, die auf übergeordneten Ordner korrekt sind (D. H. alle übergeordneten Ordner haben sollte +x-Erlaubnis), versuchen Sie, hinzufügen:
den Popen Befehl wie:
Scheint es die "Berechtigungen verweigert " - Fehler' war ursprünglich aus Popen versuchen, auszuführen, mdb-export aus den falschen Ort (und zusammengesetzte Dinge, die mit den falschen Berechtigungen).
Wenn mdbtools installiert ist, die folgenden, funktioniert einwandfrei und erbt die richtigen Berechtigungen, ohne die Notwendigkeit für sudo etc.
(Erwähnenswert ist, ich hab mich in ein Durcheinander für eine Weile vergessen, dass Popen für das öffnen von ausführbaren Dateien, nicht für Ordner oder nicht-exectable Dateien in Ordnern)
Danke für all Eure Antworten, Sie machte alles für eine interessante Lektüre, unabhängig 🙂
Können Sie feed "sudo" zu Teilprozess? Sehen dies SO thread.
@Jon Hadley, der Dolmetscherin:
Vom Terminal auf OS X, ich habe zu tun, sudo, wenn ich das Skript ausführen:
dann ist dies (in test.py) gibt die gleiche Ausgabe wie vorher:
Erste Teilprozess, direkt zu behandeln, die Authentifizierung von einem script ist wahrscheinlich nicht eine gute Idee, denn es blendet die Privilegien-Eskalation. Aber man konnte sich bei pexpect und diese SO Antwort.
Müssen Sie auch, um sicherzustellen, lese-und execute-Berechtigungen für die Benutzer ausführen von code auf die Verzeichnisse, bis Sie die Kette - /Benutzer /Benutzer/jondoe und /Users/jondoe/Entwicklung.