Pip / Python problem - distribution was not found and is required by the application

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Pip / Python problem - distribution was not found and is required by the application? Schau mal ob du hier fündig wirst!

  • Hallo,

    was heißt eigentlich genau "Ich habe die 3.10.11 manuell installiert." - installiert als Paket aus Quelle? Oder manuell kompiliert?

    Und welche Version von Raspberry Pi OS benutzt du bzw. welche Python-Version ist das in der Standardinstallation an Bord?

    Lt. Ausgangspost hast du mit deiner manuell installierten Version des Default-Python des Systems überschrieben. Sollte man nie machen, dass kann unangenehme Nebeneffekte haben.

    Gruß, noisefloor

  • Was passiert wenn Du in dem venv ``python3`` aufrufst und ``import ssl`` eingibst?

    root@raspberrypi:~# source /root/wattpilot/WATT_VENV/bin/activate

    (WATT_VENV) root@raspberrypi:~# ``python3``

    Python 3.10.11 (main, May 26 2023, 10:59:03) [GCC 10.2.1 20210110] on linux

    Type "help", "copyright", "credits" or "license" for more information.

    >>> import ssl

    Traceback (most recent call last):

    File "<stdin>", line 1, in <module>

    File "/usr/local/lib/python3.10/ssl.py", line 99, in <module>

    import _ssl # if we can't import it, let the error propagate

    ModuleNotFoundError: No module named '_ssl'

    >>> ``import ssl``

    File "<stdin>", line 1

    ``import ssl``

    ^

    SyntaxError: invalid syntax

    >>>

  • Hallo,

    was heißt eigentlich genau "Ich habe die 3.10.11 manuell installiert." - installiert als Paket aus Quelle? Oder manuell kompiliert?

    Und welche Version von Raspberry Pi OS benutzt du bzw. welche Python-Version ist das in der Standardinstallation an Bord?

    Lt. Ausgangspost hast du mit deiner manuell installierten Version des Default-Python des Systems überschrieben. Sollte man nie machen, dass kann unangenehme Nebeneffekte haben.

    Gruß, noisefloor

    manuell kompiliiert und zusätzlich zur bestehenden 3.9.x installiert. danach mit ln die python versionen umgelegt von 3.9.x auf 3.10.11
    ich nutze rap OS mit standard pyhton 3.9.2

  • Hallo,

    SyntaxError: invalid syntax

    Das sollte so aussehen:

    Code
    [dennis@dennis ~]$ source test/bin/activate
    (test) [dennis@dennis ~]$ python
    Python 3.11.3 (main, May 24 2023, 00:00:00) [GCC 12.3.1 20230508 (Red Hat 12.3.1-1)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import ssl
    >>> 

    Nur eben mit 'python3' falls 'python' bei dir auf Python2 zeigt.

    Grüße

    Dennis

    Edit: Etwas zu langsam :sleepy:

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Hallo,

    manuell kompiliiert und...

    ok, dann haben wohl Pakete gefehlt. Anleitung zum Kompilieren inkl. aller Module: https://wiki.ubuntuusers.de/Python/manuelle_Installation/ Ist zwar für Ubuntu geschrieben, sollte unter Raspberry Pi OS genau so funktionieren.

    danach mit ln die python versionen umgelegt von 3.9.x auf 3.10.11

    Macht man nicht. Kann gut gehen, muss aber nicht. Python ist für Raspberry Pi OS (und viele andere Distros) Bestandteil der Grundinstallation und ohne Python3 läuft das System erst gar nicht. Wenn man die Version, die zur Kerninstallation gehört ändert, kann das unerwünschte Nebeneffekte bis zu einem nicht funktionierenden System führen (kann, muss aber nicht). Also: nie machen.

    Zumal es ohne Probleme möglich ist, mehrere Python-Version konfliktfrei parallel zu installieren und aufzurufen. Ist auch im oben genannten Artikel erklärt.

    Gruß, noisefloor

  • Das ist das Problem, wenn man selbst baut, aber bestimmte Bibliotheken fehlen und deswegen die Funktionalität nicht integriert wird. Ein nachträgliches Installieren der Bibliothek bringt aber auch nichts, solange Python nicht neu kompiliert wird.

    Hier sind für alle möglichen Distributionen die Abhängigkeiten gelistet: https://github.com/pyenv/pyenv/wi…ild-environment

    Für Debian:

    Code
    sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
    libbz2-dev libreadline-dev libsqlite3-dev curl \
    libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

    Das Paket libssl-dev ist die openssl Bibliothek + Header-Dateien. Nachdem die Abhängigkeiten installiert sind, kannst du ein vollwertiges Python kompilieren, bei dem nicht ein paar Features fehlen.

    Falls du keinen Desktop nutzt und auch nicht die Abhängigkeiten installieren willst, dann lass das Paket tk-dev außen vor.


    klaus1 Ohne die ``.

    Darüber hat er es ohne die Backticks gemacht, _ssl fehlt immer noch.

    Da ich pyenv nutze, habe ich noch ein paar Umgebungsvariablen gesetzt, dass der Vorgang zwar um einiges verlängert, dafür aber eine optimierte Python-Version kompiliert wird.

    Code
    # takes long time
    export PYTHON_CONFIGURE_OPTS='--enable-optimizations --with-lto --enable-shared'
    export PYTHON_CFLAGS='-march=native -mtune=native'

    Das braucht man nicht machen, ist aber sinnvoll, wenn man diese Python-Version ständig nutzt und andere Programme diese Version nutzen.

  • kann ich hier wieder aufsetzen ? muss ich das vorher deinstalileren = 3.10 ?
    danke

    root@raspberrypi:/usr/bin# cd /usr/local/bin

    root@raspberrypi:/usr/local/bin# ls

    2to3-3.10 idle3.10 pip3.10 pydoc3.10 python3.10 python3.10-config wattpilotshell

    root@raspberrypi:/usr/local/bin# ls pyt*

    python3.10 python3.10-config

    root@raspberrypi:/usr/local/bin#

  • Solange ``python`` und ``python3`` keine Links zu ``python3.10`` sind, stört das nicht weiter. Unter ``python`` und ``python3`` sollte immer das Python angesprochen werden können, welches von der Linux-Distribution kommt. Also falls das nicht mehr der Fall sein sollte, würde ich die Links wieder ”geradebiegen”.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • so.. hab nun libssl usw installiert, danach python 3.10.11 neu compiliert.

    sodass ich danach auch mit import ssl das ganze durchführen konnte.

    jetzt klappt der befehl: get-pip.py "pip==20.3.4", aber ich steh jetzt wieder beim installieren meiner software im VENV:

  • Wobei ich nicht sehe woher das kommt:

    https://github.com/joscha82/wattp…equirements.txt

    und Version 3.10 wird wohl nur aus einem kleinen speziellen Grund benötigt:


    Actually, it's just wattpilotshell.py that's tied to 3.10 by using type hints "bool | None". Otherwise, wattpilot runs happily with 3.8 as well. The Wattpilot class works fine with 3.8.

  • Die Lösung ist ganz einfach. In jeder Python-Datei, wo inkompatible Typen-Annotationen genutzt werden, diesen Import hinzufügen:

    Python
    from __future__ import annotations

    Dann läuft es auch mit Python 3.9


    Code zum Testen

    Python
    from __future__ import annotations
    
    
    def foo(a: int | None) -> list[int|str]:
        pass

    Habe ich auch im issue geschrieben.

  • oh mann oh mann....

    hab jetzt nichts weiters gemacht als nicht mit dem dämlichen pip install . gearbeitet, sondern:

    python setup.py install

    das hat mal geklappt.

    dann beim starten von wattpilotshell gabs einen fehler in:
    /usr/local/bin/wattpilotshell

    da hab ich in erster Zeile dann
    from __future__ import annotations

    rein gegeben. fertig!

    VIELEN VIELEN DANK an alle !

  • Dann nutzt du jetzt sehr wahrscheinlich Python 3.9, dass vom Betriebssystem bereitgestellt wird.

    Der Maintainer des Projektes hat wahrscheinlich aus Unwissen heraus Python 3.10 vorausgesetzt, was sich aber mit dem Import umgehen lässt.

    Andere neuere Funktionalitäten von Python 3.10 scheint er in seinem Projekt nicht zu verwenden.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!