Kann keine .py-Datei aus Kitt ausführen, Syntaxfehler: Wort unerwartet (erwartet ")")

Ich bin neu bei Python und Linux und beantrage so einfache Erklärungen mit minimal angenommenem Wissen wo möglich, aber ich bin mehr als bereit, Zeit und Mühe zu investieren.

Ich habe ein Raspberry Pi 2 (Modell B V1.1), das Linux läuft. Ich interagiere mit diesem pi über Kitt.

Ich versuche, ein einfaches, kompetitives Reflexspiel zu kreieren, bestehend aus 2 Tasten und einer einzigen LED. Mein Ziel ist es, die LED nach kurzer Zeit zu leuchten, und der erste Spieler, der ihre Taste drückt, gewinnt.

Ich schreibe das Skript dafür mit Python (speziell 2.7.3)

Mein Problem ist, dass ich nicht in der Lage bin, irgendeine .py-Datei aus Kitt zu laufen, bekomme ich immer den gleichen Fehler:

Syntax error: word unexpected (expecting ")") 

Um festzustellen, ob das Problem war ein Fehler in meinem Code, habe ich eine sehr sehr einfache .py-Datei erstellt, um zu überprüfen, ob der gleiche Fehler auftritt, und es tat. Also ich glaube derzeit auch wenn mein Code funktional war, etwas hält mich davon ab, irgendeine .py-Datei zu laufen.

Der Prozess, den ich verwende, ist wie folgt:

Zuerst schaffe ich eine neue Python-Datei aus Kitt:

 sudo nano test.py 

Als nächstes gebe ich meinen Python-Code (sehr einfach für jetzt, da kann ich nicht irgendeine .py-Datei laufen lassen)

 for each in range(5): print 'hello' 

Ich drücke dann STRG + O, um die Datei zu schreiben, drücke Enter, dann STRG + X zum Beenden

Schließlich mache ich die Datei ausführbar mit

 sudo chmod u+x test.py 

Und versuche es zu laufen

 sudo ./test.py 

Wieder tritt ein ähnlicher fehler auf

 Syntax error: "(" unexpected 

Ich habe mich dann entschlossen, den Code direkt in die Pythonschale einzutragen

 sudo python >>>for each in range(5): ... print 'hello' 

Diesmal ist die Ausgabe das gewünschte Ergebnis:

 hello hello hello hello hello 

So gibt es kein Problem bei der Ausführung von Python-Code direkt aus der Shell, ich bin einfach nicht in der Lage, eine zuvor gespeicherte .py-Datei auszuführen

Jeder Einblick in das, was das verursachen könnte, wird sehr geschätzt, und ich entschuldige mich, wenn ich nicht genügend Informationen zur Verfügung stelle, um für dich nützlich zu sein.

Danke im Voraus!

2 Solutions collect form web for “Kann keine .py-Datei aus Kitt ausführen, Syntaxfehler: Wort unerwartet (erwartet ")")”

Kurze Antwort: Entweder laufe diese als python filename.py , oder füge die Zeile #!/usr/bin/python an die Spitze deines Python Scripts.

Lange Antwort: Wenn du eine Datei aus der Kommandozeile unter Linux ausfühst (was das Raspberry Pi läuft), setzt sie standardmäßig voraus, dass es sich bei der Datei um eine Shell-Skriptdatei handelt (meist Bash-Skript). So nutzt es die Bash-Shell (oder eine andere Shell, aber es ist normalerweise Bash), um die Datei zu interpretieren, und Bash kennt keine Python-Syntax. Wenn du deine Datei mit einem anderen Interpreter ausführen möchtest (Python in diesem Fall), musst du am Anfang der Datei eine "magische Linie" hinzufügen, beginnend mit #! (In der Regel ausgesprochen "Hash-Bang", und manchmal ausgesprochen "Shebang" kurz). Nach dem #! Zeichen ist der vollständige Pfad des Interpreters zu verwenden, zB /usr/bin/python für Python-Skripte. (Sie können auch /usr/bin/env python wie eine andere Antwort vorgeschlagen, ich bevorzuge /usr/bin/python weil es unmöglich ist, die falsche Python-Interpreter auf diese Weise zu bekommen. Aber das ist immer in fortgeschrittene Themen, die mehr sein können als Sie brauchen jetzt sofort.)

Also, wenn du die Linie #!/usr/bin/python an die Spitze deiner Python-Skripte steckst, erzählst du das Linux-System, welches das Programm mit dem Dolmetscher ausführt, und dann sollte es All Just Work ™ sein.

Auch STOP mit Sudo zu bearbeiten und laufen diese! Das ist nur um Ärger zu bitten.

Wenn Sie so ausführen möchten, benötigen Sie die folgende Zeile als erste Zeile

 #!/usr/bin/env python 

Dies wird mit bash (oder gleichwertig) die Datei mit dem Python-Interpreter ausführen.

Wenn du das nicht willst, kannst du das Skript so ausführen:

 $ python test.py 

Wenn du diese Route gehst, dann musst du keine Berechtigungen für das Skript selbst erteilen.

Auch Skripte sollten nicht mit sudo ausgeführt werden, es sei denn, absolut notwendig.

  • Wie kann ich ein Superuser-Account auf Cassandra mit Homebrew erstellen?
  • Sudo erforderlich für easy_install pip in OS X Lion?
  • Python kann nicht ohne Sudo-Zugriff installiert werden
  • Führen Sie einen Linux-System-Befehl als Superuser, mit einem Python-Skript
  • Drop-Root-Berechtigungen für bestimmte Operationen in Python
  • Wechsel zu sudo Benutzer innerhalb eines Python-Skripts
  • Pip installieren: Bitte überprüfen Sie die Berechtigungen und Besitzer dieses Verzeichnisses
  • 'Pip install <package>' konsistente Berechtigung verweigert
  • Sudo python läuft alte python version
  • Kann keine Globale Bibliothek ohne Root-Berechtigungen installieren
  • Python pexpect & pxssh mit sudo und EOF
  • Python ist die beste Programmiersprache der Welt.