Fehler "126" Permission Denied Python - Was tun?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wie führst Du den Code denn aus?

Lade die "*.py"-Datei herunter (folge auf GitHub dem "Raw"-Link / -Button, dann "Seite speichern unter ..."), speichere sie z. B. in Dein Home-Verzeichnis, öffne ein Terminal und gib dann ein:

python3 l298n_dc.py

Oder um es als "root" auszuführen (evtl. erforderlich für GPIO-Zugriff?) ein "sudo" davor.

Man kann auch auf einem Raspberry Pi unter Raspberry Pi OS ein Python-Programm kompilieren. Dann ist es eine ausführbare Binärdatei. Auch ideal wenn man den Programmcode geheimhalten möchte. Das geht so:

Starte die Konsole bei Raspberry Pi OS. Dann folgenden Befehl eingeben:

  • sudo pip install pyinstaller bzw. sudo pip3 install pyinstaller

Wenn das abgeschlossen ist, geht man in den Ordner wo das Python-Programm gespeichert ist. Dort gibt man dann folgenden Befehl ein:

  • sudo pyinstaller --onefile programmname.py

Dann hat man in dem Ordner wo das Python-Programm gespeichert ist 3 weitere Unterordner: build dist und __pycache__ Im Ordner dist findet man dann das kompilierte Python-Programmm mit dem Namen programmname. Es hat keine Dateiendung. Das startet man dann mit dem Befehl ./programmname Oder man verschiebt es in den Ordner /usr/local/bin/

Dann kann man es von jedem beliebigen Ordner aus mit dem Befehl programmname starten.

Hallo peterandres4760,

da fehlt vermutlich die Berechtigung um das geenannte Skript auszuführen.

Kann mit dem Befehl chmod gelöst werden:

chmod +x /tmp/geany_run_script_TIHFZ1.sh

Das +x besagt, dass zu den bisherigen Dateiberechtigungen auf allen Berechtigungsstufen (Owner, Group, Other) die Berechtigung zum Ausführen dieser Datei addiert wird.

Ben


peterandres4760 
Fragesteller
 02.02.2023, 11:00

Was ist denn "geany_run_script_TIHFZ1.sh"?

1
peterandres4760 
Fragesteller
 02.02.2023, 11:06
@Ben Sellin

chmod: Zugriff auf '/tmp/geany_run_script_TIHFZ1.sh' nicht möglich: Datei oder Verzeichnis nicht gefunden

...kommt jetzt

Wie kann ich Geany denn als Admin ausführen unter Linux? Vielleicht könnte das ja das Problem beheben?

1
NoHumanBeing  02.02.2023, 11:14
@peterandres4760

Terminal öffnen und dann:

sudo geany

?

Ich verstehe allerdings nicht, warum hier überhaupt eine "Entwicklungsumgebung" verwendet wird und nicht schlicht ein Texteditor und Python dann aus dem Terminal gestartet wird.

Das vereinfacht die Dinge enorm.

2
peterandres4760 
Fragesteller
 02.02.2023, 11:20
@NoHumanBeing

Wenn ich "sudo geany" eingebe, dann öffnet sich einfach nur ein neues Fenster von Geany.

Ok, ich mach das anders: Ich habe die .py Datei heruntergeladen und in "Dokumente" platziert. Wie kann ich die jetzt ausführen im Terminal?
einfach "cd /home/admin/Dokumente/Neu.py" und dann "sudo Neu.py"??

1
peterandres4760 
Fragesteller
 02.02.2023, 11:24
@NoHumanBeing

Ok, ich krieg die zwar ausgeführt, aber es kommt wieder ein Fehler:

File "/home/admin/Dokumente/Neu.py", line 12
  temp1=1a
      ^
SyntaxError: invalid syntax

Der kommt nicht parat ab folgender Zeile im Code:
GPIO.setmode(GPIO.BCM)

1
NoHumanBeing  02.02.2023, 14:03
@peterandres4760
einfach "cd /home/admin/Dokumente/Neu.py" und dann "sudo Neu.py"??

Nein.

"cd" steht für "change directory", von daher muss dort ein Verzeichnis angegeben werden, keine Datei. Also wenn, dann ...

cd /home/admin/Dokumente/

Oder wenn Du mit dem User "admin" eingeloggt bist, geht auch kürzer ...

cd ~/Dokumente/

("~" ist immer das Benutzerverzeichnis des Users, in dessen Kontext die Shell gerade läuft. Vorsicht! Wenn Du z. B. mit Adminrechten unterwegs bist, ist "~" das Benutzerverzeichnis von "root"!)

Du kannst überprüfen, in welchem Verzeichnis Du Dich gerade befindest, indem Du folgendes eingibst ...

pwd

Auch wenn der Name des Befehls ein wenig an das Wort "password" erinnert, steht er tatsächlich für "print working directory". Das heißt, der Befehl gibt zurück, in welchem Verzeichnis Du Dich gerade befindest.

Wenn Du Dich im korrekten Verzeichnis befindest, dann versuch mal ...

python3 Neu.py

Python ist eine interpretierte Sprache. Du rufst daher als Programm den Interpreter (Befehl "python3" - die 3 steht für die Version) auf und übergibst als Argument, welche Quellcodedatei er interpretieren soll.

Oder wenn Du Root-Rechte brauchst, um auf die GPIO zuzugreifen, dann entweder ...

sudo python3 Neu.py

... oder Du machst zunächst ...

sudo -s

Dann bist Du Root.

Und anschließend ...

python3 Neu.py

Um die Root-Rechte wieder "abzugeben", einmal ...

exit

Dann bist Du wieder in der "unprivilegierten" Shell.

(Nie länger mit Root-Rechten arbeiten, als unbedingt nötig. Ein weiteres "exit" beendet dann die Terminalsitzung.)

1
NoHumanBeing  02.02.2023, 14:05
@peterandres4760
line 12
  temp1=1a
      ^
SyntaxError: invalid syntax
Der kommt nicht parat ab folgender Zeile im Code:
GPIO.setmode(GPIO.BCM)

Nö, er kommt nicht klar mit:

temp1=1a

In der Quellcodedatei auf Github steht ja auch:

temp1=1
0
NoHumanBeing  02.02.2023, 14:08
@peterandres4760
Wenn ich "sudo geany" eingebe, dann öffnet sich einfach nur ein neues Fenster von Geany.

Ja, das sollte dann aber mit Adminrechten laufen. ;-)

Du wolltest ja ausschließen, dass es sich um ein Rechteproblem handelt.

Aber, wie gesagt, ich würde es außerhalb einer Entwicklungsumgebung ausführen. Das macht weniger Probleme, weil man besser versteht, was passiert. Entwicklungsumgebungen "automatisieren" viele Dinge. Da hat man dann nicht mehr so die Kontrolle. Gerade wenn es um Rechteprobleme, etc. geht, die Dinge lieber "händisch" machen, also den Interpreter vom Terminal aus aufrufen.

1