Raspi mit langem Tastendruck runterfahren

  • Nein, installieren geht nicht.


    Code
    pi@raspberrypi ~ $ sudo pip3 install gpiozero
    sudo: pip3: command not found
  • Leider Fehler:

    Python
    pi@raspberrypi ~ $ /usr/bin/python /home/pi/buttonoff.py &
    [1] 2647
    pi@raspberrypi ~ $ Traceback (most recent call last):
      File "/home/pi/buttonoff.py", line 4, in <module>
        from gpiozero import Button
    ImportError: No module named gpiozero
  • Ich habe in der Zwischenzeit mal ein altes Skript eines ehemaligen Users ein bisschen angepasst. Testen kann ich das aber mangels Python2 leider nicht.


    Starte das mal mit python /Pfad/zum/skript und drücke mal die Taste länger als 3 Sekunden.


    Zeige dann mal alle Ausgaben hier in einem Codeblock!

  • Das ist uralt und wird nicht mehr unterstützt.

    Zum Glück sind Maintainer was das betrifft sehr strikt und leisten keinen Support mehr für abgekündigte Versionen der vertriebenen Software.


    Das Problem, dass du hast, tritt so oft auf, dass es sogar lustige Cheat-Sheets dazu gibt.



    Grundsätzlich ist es besser, mit Virtuellen Environments zu arbeiten.


    Abhängigkeiten:

    Code
    sudo apt-get update && sudo apt-get install python3-pip
    # für pip, falls das Paket noch nicht installiert sein sollte


    Virtuelles Environment erstellen:

    Python 3.2 unterstützt es nicht


    Nun ist gpiozero im venv installiert worden.


    Man kann das Virtuelle Environment adressieren, ohne es aktivieren zu müssen:


    Code
    # Mit User root
    # -c "angegebenen String als Programmcode ausführen"
    sudo /home/pi/MY_VENV/bin/python -c "import gpiozero; print(gpiozero)"

    Bei mir sieht es etwas anders aus, da anderes OS und andere Python-Version und ein anderer User:

    Quote

    [deadeye@nexus ~]$ MY_SHIT_VENV/bin/python -c "import gpiozero; print(gpiozero)"

    <module 'gpiozero' from '/home/deadeye/MY_SHIT_VENV/lib/python3.10/site-packages/gpiozero/__init__.py'>



    # wie man sehen kann, Python 3.10 und es wird aus dem VENV das Modul gpiozero geladen und nicht von einem anderen Ort

    Das funktioniert deswegen, da der Python-Interpreter ihm bekannte Pfade ausprobiert.

    Etwas besser zu verstehen ist das, wenn man die Pfade einfach ausgibt:

    Python
    [deadeye@nexus ~]$ MY_SHIT_VENV/bin/python -c "from sysconfig import get_paths; print('\n'.join(f'{kind:<15} {path}' for kind, path in get_paths().items()))"
    stdlib          /home/deadeye/.pyenv/versions/3.10.4/lib/python3.10
    platstdlib      /home/deadeye/MY_SHIT_VENV/lib/python3.10
    purelib         /home/deadeye/MY_SHIT_VENV/lib/python3.10/site-packages
    platlib         /home/deadeye/MY_SHIT_VENV/lib/python3.10/site-packages
    include         /home/deadeye/.pyenv/versions/3.10.4/include/python3.10
    platinclude     /home/deadeye/.pyenv/versions/3.10.4/include/python3.10
    scripts         /home/deadeye/MY_SHIT_VENV/bin
    data            /home/deadeye/MY_SHIT_VENV

    Wie man erkennen kann, kommt MY_SHIT_VENV in Pfaden vor. Die stdlib nimmt er hingegen vom System und bei mir das von pyenv (Programm um Python-Versionen zu installieren). Wichtig sind purelib und platlib bei nachträglich installierten Modulen wie z.B. gpiozero.


    Später kann man das Programm ausführen, in dem man den kompletten Pfad zu python im Virtuellen Environment angibt. Ob das nun via systemd (aktuell), rc.local (total veraltet) oder einem init-script (total veraltet) macht, ist kein Unterschied.


    Code
    /home/pi/MY_VENV/bin/python /home/pi/.local/bin/my_programm.py
    # Der Interpreter aus MY_VENV führt dann das Programm in /home/pi/.local/bin/my_programm.py aus
    # Der Pfad zu dem Programm kann natürlich ein anderer sein


    Wenn man das ignoriert, kommt man irgendwann in die Abhängigkeitshölle.


    Ein Update des OS wäre sinnvoll. Eine Sicherung solltest du auf jeden Fall machen, da Updates auch schiefgehen können.

    Alternativ würde sich noch anbieten, dass du Python mit pyenv installierst, aber dazu benötigst du die Toolchain (Compiler, Linker, Bibliotheken, git), da pyenv Python aus den Quellen kompiliert.

  • Also vielen Dank erstmal für eure Unterstützung, aber ich glaube das hilft mir jetzt mit meinem problem nicht wirklich weiter.....


    Es untersreicht aber mal wieder warum ich auf meinem Hauptrechner immer noch mit Windows arbeite. Keine Frage Linux an sich ist toll, man kann wundervolle Sachen damit machen.

    Aber mal ehrlich - für Leute die ab und an Projekte in Angriff nehmen, dann keinen Support mehr bekommen bzw. fehlende Abhängkeiten usw. das ist einfach für die meisten NICHT praktikabel. Und genau das ist meiner Meinung immer noch das Problem von Linux im ganz allgemeinen. sonst hätte es evtl. Windows auch schon abgelöst.....


    Vielen Dank - ich fürchte ich muss bei meiner "Notkrücke" bleiben um den Automat runterzufahren.


    Gruß Rooki

  • Aber mal ehrlich - für Leute die ab und an Projekte in Angriff nehmen, dann keinen Support mehr bekommen bzw. fehlende Abhängkeiten usw. das ist einfach für die meisten NICHT praktikabel. Und genau das ist meiner Meinung immer noch das Problem von Linux im ganz allgemeinen. sonst hätte es evtl. Windows auch schon abgelöst.....

    Ich habe auch noch tolle Programme für Windows, leider liefen die nur bis Windows XP, ab Windows7 wurde der Start verweigert.

  • rooki_1:

    aber ich glaube das hilft mir jetzt mit meinem problem nicht wirklich weiter.....

    [...]

    Aber mal ehrlich - für Leute die ab und an Projekte in Angriff nehmen, dann keinen Support mehr bekommen bzw. fehlende Abhängkeiten usw. das ist einfach für die meisten NICHT praktikabel.

    :no_sad:

    Ich wollte ja erst noch ein paar Sätze dazu schreiben. Hier in Beitrag #51(!) dieses Threads.


    Aber bei Deiner Einstellung scheint mir das vergeblicher Aufwand.

    Ich bin raus.

  • Hallo simonz,


    ich glaube dass du mich da falsch verstanden hast. Den fehlenden Support meinte ich natürlich bezogen auf das Image im ganz Allgemeinen, nicht auf dieses Forum.