Forum: PC-Programmierung Raspberry: Pfad eines Python-Skriptes herusfinden


von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Für einen geübten Linux-User klingt das ziemlich dämlich, für Neulinge 
ist es nicht so selbstverständlich: Wie bekomme ich den Pfad eines 
Python-Skriptes heraus, so dass ich ihn für den Autostart in rc.local 
eintragen kann? Die Daten:

- ich bin User "pi"

- ich habe auf einem "jungfräulichen" Raspi 2 unter Raspian mit apt-get 
eine Zip-Datei heruntergeladen und diese mit unzip entpackt, ohne nach 
dem Einloggen mit SSH das Verzeichnis zu wechseln

- dabei ist ein Ordner "led-matrix" entstanden, in dem sich nun auch 
meine *.py-Datei befindet

Wie lang muss der Pfad "Nach Oben" reichen, beginnt er mit "~/" oder nur 
mit "/" oder gar mit "\"?

Soweit ich mit immer wieder "cd .." und "ls" herausgefunden habe, steckt 
der Ordner "led-matrix" in "home" und nicht etwa in "user", wie ich 
erwartet hätte. Eine Ebene darüber scheint Schluss zu sein, jedenfalls 
ändern sich die angezeigten Verzeichnisse nicht mehr, egal wie oft ich 
"cd .." mache. Aber da ist immer noch das Problem mit der richtigen 
Schreibweise ... Bitte einen Tip!

von Kaj (Gast)


Lesenswert?

/ ist das wurzelverzeichnis, höher gehts nicht.
/home ist eine ebene darunter (oder heißt es darüber?)

wenn du wissen willst in welchem verzeichnis du jetzt gerade bist, hilft 
dir das kommando:
1
pwd

mit
1
cd /
landest du im wurzelverzeichnis, also ganz oben. mit
1
cd ~
landest du im homeverzeichnis des users

von Rolf M. (rmagnus)


Lesenswert?

Frank E. schrieb:
> Wie lang muss der Pfad "Nach Oben" reichen, beginnt er mit "~/" oder nur
> mit "/" oder gar mit "\"?

"\" ist das Escape-Zeichen. Das hat in Pfaden nichts zu suchen. Wenn du 
es in einem Startup-Skript verwenden willst, nimm absolute Pfade. Also 
beginnend mit "/". "~/" wird nicht funktionieren, da es sich auf das 
Home-Verzeichnis des aktuellen Benutzers bezieht. Das Startup-Skript 
wird aber über einen anderen Benutzer ausgeführt.

> Soweit ich mit immer wieder "cd .." und "ls" herausgefunden habe, steckt
> der Ordner "led-matrix" in "home" und nicht etwa in "user", wie ich
> erwartet hätte.

Warum? Die Home-Verzeichnisse sind immer in /home ;-)

> Aber da ist immer noch das Problem mit der richtigen Schreibweise ...
> Bitte einen Tip!

Mach einfach ein
1
realpath <dein_script>
und verwende das, was dort ausgegeben wird.

von Sheeva P. (sheevaplug)


Lesenswert?

Frank E. schrieb:
> Für einen geübten Linux-User klingt das ziemlich dämlich, für Neulinge
> ist es nicht so selbstverständlich: Wie bekomme ich den Pfad eines
> Python-Skriptes heraus, so dass ich ihn für den Autostart in rc.local
> eintragen kann?

Solche Skripte gehören per Konvention nicht irgendwo hin, sondern unter 
"/usr/local/bin/", die Konfigurationsdatei unter "/usr/local/etc/", usw.

> - ich habe auf einem "jungfräulichen" Raspi 2 unter Raspian mit apt-get
> eine Zip-Datei heruntergeladen und diese mit unzip entpackt, ohne nach
> dem Einloggen mit SSH das Verzeichnis zu wechseln

Mit "apt-get" eine Zip-Datei herunterladen? Wie das? Apt-get ist ein 
Teil des Paketmanagers und installiert Software, die im 
Debian-Paketformat .deb daherkommt.

> - dabei ist ein Ordner "led-matrix" entstanden, in dem sich nun auch
> meine *.py-Datei befindet
>
> Wie lang muss der Pfad "Nach Oben" reichen, beginnt er mit "~/" oder nur
> mit "/" oder gar mit "\"?
>
> Soweit ich mit immer wieder "cd .." und "ls" herausgefunden habe, steckt
> der Ordner "led-matrix" in "home" und nicht etwa in "user", wie ich
> erwartet hätte. Eine Ebene darüber scheint Schluss zu sein, jedenfalls
> ändern sich die angezeigten Verzeichnisse nicht mehr, egal wie oft ich
> "cd .." mache. Aber da ist immer noch das Problem mit der richtigen
> Schreibweise ... Bitte einen Tip!

Wenn Du per SSH eingeloggt bist, gib einmal "cd" (ohne Parameter) ein. 
Dann befindest Du Dich in Deinem Home-Verzeichnis, bei einem RasPi mit 
dem Benutzer "pi" ist das standardmäßig das Verzeichnis "/home/pi". Dann 
gib dort je einmal "ls -l" und "ls -l .." ein.

Wenn Dein Verzeichis "led-matrix" beim ersten "ls -l" erscheint, 
befindet es sich in Deinem Homeverzeichnis "/home/pi/", der komplette 
Pfad wäre dann also "/home/pi/led-matrix/". Wenn Dein Verzeichnis beim 
zweiten "ls -l .." erscheint, befindet es sich unter 
"/home/led-matrix/", da ".." in Linux-Pfadangaben (genauso wie unter 
Windows) für das übergeordnete Verzeichnis steht.

Selbst wenn Du das Programm nicht unter "/usr/local/*/" installieren 
willst: nach "/home/" gehört es jedenfalls definitiv nicht, und Du 
solltest es dann wenigstens in Dein Homedirectory verschieben: "mv 
/home/led-matrix /home/pi".

von hape_kerkeling (Gast)


Lesenswert?

Ein Python Script in den bin Ordner? Wieso das?

von Rolf M. (rmagnus)


Lesenswert?

hape_kerkeling schrieb:
> Ein Python Script in den bin Ordner? Wieso das?

Weil's da hingehört?

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Also Leute, es (der Autostart des Python-Skriptes) funktioniert!

Man trägt in rc.local das Startkommando ein. Für alle die, die das noch 
nicht gemacht haben und sich dafür interessieren, es geht so:

1. Mit "sudo nano /etc/rc.local" den Editor Nano öffnen
2. als vorletzte Zeile (letzte Zeile sollte "exit 0" sein) eintragen:

"sudo python /home/pi/myfolder/myprog.py"

Den Pfad habe ich, als ich mich im gleichen Verzeichnis wie myprog.py 
"aufhielt" per "pwd myprog.py" korrekt angezeigt bekommen.

3. mit CTRL+O speichern und mit CTRL-X den Editor beenden. Im 
Mac-Terminal funktioniert bei mir CTRL-O nicht, wahrscheinlich wird 
diese Funktion vom Mac OS X verwendet. Dann einfach nur CTRL-X eingeben 
und die Frage des Editors ob gespeichert werden soll mit "J" beantworten 
...

Danke für alle Tips!

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Frank E. schrieb:
> "sudo python /home/pi/myfolder/myprog.py"

Das sudo kannst Du Dir sparen. rc.local wird immer mit der User-ID root 
ausgeführt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.