Ankündigung

Einklappen
Keine Ankündigung bisher.

Bookworm auf CM4 (Python 3.11) - systemctl start looped

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Bookworm auf CM4 (Python 3.11) - systemctl start looped

    Hallo Experten,

    ich habe bis auf eine Kleinigkeit nun einen meiner CM4-Pis auf Bookworm mit Python3.11, aktueller SmarhomeNG und aktueller SmarVisu umgestellt. Alles läuft extrem gut und dabei sogar performanter und resourcenschonender (Temperatur und Taktfrequenz) als zuvor. Ich bin vollends zufrieden und würde auch den 2ten Pi, die heutige Produktivversion, umstellen, aber leider klappt das i-Tüpfelchen noch nicht: der systemctl-Start (ohne systemctl per Hand geht es).

    Die Smarthome-Applikation kommt mit systemctl nicht hoch, sie verharrt in einer Schleife und will etwas (nach-)installieren, was aber gar nicht nötig ist, siehe:
    Code:
    pi@cm4-io-base-box-1:~ $ sudo systemctl start smarthome.service
    pi@cm4-io-base-box-1:~ $ ps -eaf | grep smarthome
    smartho+    2794       1 48 10:59 ?        00:00:00 /usr/bin/python3 /usr/local/smarthome/bin/smarthome.py
    smartho+    2796    2794  0 10:59 ?        00:00:00 /bin/sh -c /usr/bin/pip3 install -r /usr/local/smarthome/requirements/base.txt --user --no-warn-script-location
    smartho+    2797    2796 99 10:59 ?        00:00:00 /usr/bin/python3 /usr/bin/pip3 install -r /usr/local/smarthome/requirements/base.txt --user --no-warn-script-location
    pi          2799    1253  0 10:59 pts/0    00:00:00 grep --color=auto smarthome
    pi@cm4-io-base-box-1:~ $ ps -eaf | grep smarthome
    smartho+    2800       1 96 10:59 ?        00:00:00 /usr/bin/python3 /usr/local/smarthome/bin/smarthome.py
    pi          2806    1253  0 10:59 pts/0    00:00:00 grep --color=auto smarthome
    pi@cm4-io-base-box-1:~ $ ps -eaf | grep smarthome
    smartho+    2827       1 93 10:59 ?        00:00:00 /usr/bin/python3 /usr/local/smarthome/bin/smarthome.py
    pi          2833    1253  0 10:59 pts/0    00:00:00 grep --color=auto smarthome
    pi@cm4-io-base-box-1:~ $ ps -eaf | grep smarthome
    smartho+    2849       1 37 10:59 ?        00:00:00 /usr/bin/python3 /usr/local/smarthome/bin/smarthome.py
    smartho+    2851    2849  0 10:59 ?        00:00:00 /bin/sh -c /usr/bin/pip3 install -r /usr/local/smarthome/requirements/base.txt --user --no-warn-script-location
    smartho+    2852    2851 99 10:59 ?        00:00:00 /usr/bin/python3 /usr/bin/pip3 install -r /usr/local/smarthome/requirements/base.txt --user --no-warn-script-location
    pi          2854    1253  0 10:59 pts/0    00:00:00 grep --color=auto smarthome
    pi@cm4-io-base-box-1:~ $
    ​
    /etc/systemd/system/smarthome.service enthält ganz normal das "Notwendige":
    Code:
    [Unit]
    Description=SmartHomeNG daemon
    After=network.target
    After=knxd.service
    After=knxd.socket
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/python3 /usr/local/smarthome/bin/smarthome.py
    WorkingDirectory=/usr/local/smarthome
    User=smarthome
    PIDFile=/usr/local/smarthome/var/run/smarthome.pid
    Restart=on-failure
    TimeoutStartSec=900
    RestartForceExitStatus=5
    
    [Install]
    WantedBy=default.target
    ​
    Hat jemand ähnliche Erfahrungen? Ich denke der "intern eingebaute" aufruf von
    /usr/bin/python3 /usr/bin/pip3 install -r /usr/local/smarthome/requirements/base.txt --user --no-warn-script-location
    ist das Problem unter Python 3.11, wenn ich das manuell mache, gibt es Fehler:

    Code:
    (py_shng) smarthome@cm4-io-base-box-1:/usr/local/smarthome $ /usr/bin/python3 /usr/bin/pip3 install -r /usr/local/smarthome/requirements/base.txt --user --no-warn-script-location
    error: externally-managed-environment
    
    This environment is externally managed
    
    To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    For more information visit http://rptl.io/venv
    
    note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
    hint: See PEP 668 for the detailed specification.
    (py_shng) smarthome@cm4-io-base-box-1:/usr/local/smarthome $
    ​
    Hat jemand eine Lösung? Vielen Dank im Voraus!

    Grüße,

    Ralf

    #2
    Das "Problem" ist nicht Python 3.11, sondern Debian Bookworm. Das wurde hier schon mehrfach besprochen und ist auch in der Doku zum aktuellen SmartHomeNG beschrieben. Du musst ein virtuelles Python Environment einrichten. Das wird von der aktuellen SmartHomeNG Version 1.10 unterstützt.
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Zitat von Msinn Beitrag anzeigen
      Das "Problem" ist nicht Python 3.11, sondern Debian Bookworm. Das wurde hier schon mehrfach besprochen und ist auch in der Doku zum aktuellen SmartHomeNG beschrieben. Du musst ein virtuelles Python Environment einrichten. Das wird von der aktuellen SmartHomeNG Version 1.10 unterstützt.
      Danke, SmarthomeNG und SmartVisu laufen prima so unter Debian Bookworm (ohne Virtualisierung) mit dem manuellem Start. Ich habe nur das kleine Problem des Aufstarten beim Booten, wenn es über systemctl nicht mehr direkt geht, werde ich mir dann eine eigene Routine schreiben ... per Hand geht und läuft es ja ausgezeichnet.

      Ralf
      Zuletzt geändert von ralf9000; 11.04.2024, 13:41.

      Kommentar


        #4
        ... ich habe die Stelle im Code gefunden und habe die Option "--break-system-packages" angehangen, damit läuft "systemctl start smarthome.service" wieder (auch wenn das nicht die "feine Art" ist):
        Code:
        (py_shng) smarthome@cm4-io-base-box-1:/usr/local/smarthome $ diff lib/shpypi.py lib/shpypi.py-ORIG
        409c409
        <         command_line = pip_command +' install -r ' + req_filepath + ' --user --no-warn-script-location --break-system-packages'
        ---
        >         command_line = pip_command +' install -r ' + req_filepath + ' --user --no-warn-script-location'
        (py_shng) smarthome@cm4-io-base-box-1:/usr/local/smarthome $
        ​
        Ralf

        Kommentar


          #5
          .... nun auch etwas eleganter, weil dann der Smarthome-Code nicht geändert werden muß:
          Code:
          (py_shng) smarthome@cm4-io-base-box-1:/usr/local/smarthome $ cat ~/.config/pip/pip.conf
          [global]
          break-system-packages = true
          
          (py_shng) smarthome@cm4-io-base-box-1:/usr/local/smarthome $
          ​
          Ralf

          Kommentar


            #6
            Hi Ralf ralf9000

            Etwas off-topic: Du verwendest ein Waveshare-Board? Mit Lüfter? Hast du den unter Raspberry Pi OS zum Laufen gebracht? Das klappt nicht mit dem cm4io-fan tool zur Lüfterregelung. Probleme mit den Header Files und noch ein paar Hürden.

            ​Es gibt zwar einige, die das hinbekommen haben, aber bei mir klappt das nicht, egal welche angeblich funktionierende Lösung ich bisher versucht habe.

            Kommentar


              #7
              Zitat von Sipple Beitrag anzeigen
              Etwas off-topic: Du verwendest ein Waveshare-Board? Mit Lüfter? Hast du den unter Raspberry Pi OS zum Laufen gebracht? Das klappt nicht mit dem cm4io-fan tool zur Lüfterregelung.
              Unter Bookworm lief der bei mir direkt ohne irgendwas zu installieren. Der Pi ist auch recht kühl bei 45-50°, die NVME-Disk darunter macht auch einiges an Wärme. Allerdings habe ich nicht nach der Geschwindigkeisregelung bis jetzt geguckt, ich war dabei SmarhomeNG und Smartvisu auf den allerletzten Versionen wieder ans fliegen zu bekommen, jetzt habe ich aber alles laufen und Zeit für Feinschliffe ... (die batteriegepufferte Uhr auf dem Board, Lüfterregelung, ...)

              Grüße, Ralf

              Kommentar


                #8
                Ja, der Lüfter läuft natürlich sofort, aber halt mit voller Geschwindigkeit.
                Die Uhr ist kein Thema, die zu aktivieren geht nach Anleitung.
                Die Lüftersteuerung geht aktuell nur, wenn man diverse Dateien modifiziert. Leider gibt es anscheinend keinen allgemeingültigen Weg. Was bei dm einen funktioniert hat, muss noch lange nicht bei jemand anderem klappen. Wenn du dazu kommst und es hinbekommst, wäre ich dir dankbar, wenn du es mich wissen lassen könntest.
                Hier der Link zu cm4io-fan auf github mit dem Thread des Problems: https://github.com/neggles/cm4io-fan/issues/18

                Kommentar


                  #9
                  Zitat von Sipple Beitrag anzeigen
                  Die Lüftersteuerung geht aktuell nur, wenn man diverse Dateien modifiziert. Leider gibt es anscheinend keinen allgemeingültigen Weg.
                  Weihnachtszeit ist auch ein wenig Bastelzeit: ich habe nun meine Lüftersteuerung wieder laufen, warum es wohl damals nicht auf dem einfachen von Waveshare beschriebenen Weg ging, war wohl ein Kernelfehler in 6.1. Mit 6.6. läuft es nun, allerdings hatte ich die Settings für das Update des Bootloaders immer aktiv, das war ein weiterer Fehler, das beißt sich mit I2C. Siehe auch die Diskussion hier: https://www.jeffgeerling.com/blog/20...boards-emc2301

                  Ralf
                  Zuletzt geändert von ralf9000; 30.12.2024, 10:08.

                  Kommentar


                    #10
                    Gerade hier drüber gestolpert, da ich mein Debian auf Bookworm gezogen hab.

                    Wie die Docs ja sagen, braucht es ein venv für die Installation aller Python plugins/libs. Das erfordert dann auch in systemd, das lokale python zu starten. Kurzum:
                    Code:
                    ExecStart=/usr/local/smarthome/venvs/py_shng/bin/python3 /usr/local/smarthome/bin/smarthome.py
                    (durch einfügen von local/smarthome/venvs/py_shng/ wird das venv-python3 ausgeführt.)

                    Das sollte letztendlich verlässlicher sein, als mittels break-system-packages das System mit packages zu fluten .

                    Leider funzt der shng-admin noch nicht wieder... mal sehn ob ich da noch hinter komme.

                    PS: schnell geht es mit "systemctl edit smarthome". Dann [Service] ExecStart= zurücksetzen und ExecStart=/usr/... neu setzen.
                    PPS: pip downgrade für shng-admin auch gefunden... https://knx-user-forum.de/forum/supp...-ohne-funktion
                    Zuletzt geändert von bytesplit; 29.01.2025, 23:16.

                    Kommentar


                      #11
                      bytesplit Fehlt Deiner Ansicht nach in der aktuellen Doku noch was?

                      Kommentar


                        #12
                        bmx - ja korrekt gescrollt... der venv-Teil passt! Hatte die Änderung überlesen...

                        EDIT...

                        Die Doku könnte also explizit darauf hinweisen, dass in Bookworm/venv dann auch bei SystemD der venv-prefix verwendet werden muss. Sonst sind die beiden service descriptions ja gleich.
                        Zuletzt geändert von bytesplit; 04.02.2025, 15:22. Grund: Tomaten auf den Augen

                        Kommentar

                        Lädt...
                        X