ubuntuusers.de

Python-Script ausführen

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

Data2006

Anmeldungsdatum:
7. November 2021

Beiträge: 899

Moin zusammen,

ich habe ein .py Script:

heiko@Worf:~/Downloads$ ll dl*
-rwxrwxr-x 1 heiko heiko 4123 Jun 29 12:56 dljoyn.py*
heiko@Worf:~/Downloads$

Dieses Script würde ich gerne im Terminal starten ohne vorher python3 eingeben zu müssen. Und vor allem will ich nicht erst in mein Downloads-Ordner reinwechseln müssen.

heiko@Worf:~/Downloads$ cat dljoyn.py
#!/usr/bin/env python3
from pathlib import Path
import subprocess
import requests
import json
import re
import os
...

So fängt das Programm an.

Muß ich das Script in einen bestimmten Ordner reinkopieren/verschieben?

Lieben Dank, Heiko

PS: Der Link https://wiki.ubuntuusers.de/Python/ hilft mir nicht weiter.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11243

Wohnort: München

Du kannst das Skript ausführbar machen, dann lässt es sich mit einem absoluten oder relativen Pfad starten, also z.B.

chmod +x dljoyn.py
./dljoyn.py
# bzw.
~/Downloads/dljoyn.py 

Wenn du es von Überall ohne Angabe des Pfades ausführen willst, musst du dafür sorgen, dass es in einem Ordner liegt, der im PATH liegt. Ubuntu sieht ~/bin/ vor, um das für einen einzelnen Benutzer umzusetzen (sollte nach einmal ab- und wieder Anmelden berücksichtigt werden) oder /usr/local/bin/, wenn man das für alle Benutzer verfügbar machen will. Alternativ kannst du einen gewünschten Ordner in den PATH aufnehmen.

xVitamine

Anmeldungsdatum:
12. Juli 2023

Beiträge: 32

Wohnort: Köln

In die erste zeile deiner dljoyn.py muss folgendes:

1
#!/usr/bin/env -S python3

Um es von überall aufrufen zu können musst du nur die Endung wegnehmen und es nach "/usr/bin" schieben

1
mv dljoyn.py /usr/bin/dljoyn

danach kannst du es aufrufen in dem du einfach "dljoyn" ins Terminal eingibst

Edit: ein link der von /usr/bin/dljoyn zu deiner datei zeigt funktioniert allerdings auch

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

und es nach "/usr/bin" schieben

Wenn dann nach /usr/local/bin . Dann ist klar, dass die Datei nicht zum System gehört.

Gruß, noisefloor

xVitamine

Anmeldungsdatum:
12. Juli 2023

Beiträge: 32

Wohnort: Köln

hauptsache...

1
#!/usr/bin/env -S python3

...steht am Anfang der Datei.

WarumLinuxBesserIst

Avatar von WarumLinuxBesserIst

Anmeldungsdatum:
2. November 2014

Beiträge: 148

Um das Python-Skript direkt im Terminal ausführen zu können, ohne python3 eingeben zu müssen, und unabhängig davon, in welchem Ordner du dich befindest, kannst du folgende Schritte ausführen:

Erstelle einen Verzeichnis für benutzerdefinierte Skripte (falls noch nicht vorhanden). Du kannst beispielsweise ein Verzeichnis namens bin im Home-Verzeichnis erstellen:

1
mkdir ~/bin

Verschiebe das Python-Skript dljoyn.py in das neu erstellte bin-Verzeichnis:

1
mv ~/Downloads/dljoyn.py ~/bin/

Ändere die Berechtigungen des Skripts, um es ausführbar zu machen:

1
chmod +x ~/bin/dljoyn.py

Füge das bin-Verzeichnis zur Umgebungsvariable PATH hinzu. Öffne die Datei .bashrc (falls vorhanden) oder .bash_profile mit einem Texteditor:

1
nano ~/.bashrc

Füge folgende Zeile am Ende der Datei hinzu:

1
export PATH="$HOME/bin:$PATH"

Speichere die Datei und schließe den Texteditor. Aktualisiere die Bash-Umgebung, damit die Änderungen wirksam werden:

1
source ~/.bashrc

Nun solltest du in der Lage sein, das Skript dljoyn.py von jedem beliebigen Verzeichnis im Terminal auszuführen, indem du einfach dljoyn.py eingibst.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

Du kannst beispielsweise ein Verzeichnis namens bin im Home-Verzeichnis erstellen:

Kann man, aber XDG-konform ist $HOME/.local/bin (siehe Link 🇬🇧). Das Verzeichnis sollte eigentlich auch existieren und schon im Suchpfad sein.

Um das Python-Skript direkt im Terminal ausführen zu können, ...

Das fehlt noch die Ergänzung, dass der beschriebene Weg für den jeweiligen Nutzer gilt und nicht systemweit.

Gruß, noisefloor

xVitamine

Anmeldungsdatum:
12. Juli 2023

Beiträge: 32

Wohnort: Köln

jap und dann wird das terminal nen error ausspucken weil es nicht weiß was es vor eine Sprache ist

top posts hier 👍

Antworten |