Python 3.10.1 richtig installieren...

  • Hi zusammen,

    tut mir leid wenn das jetzt im falschen Bereich ist. bitte einfach verschieben :)


    Ich bekomme es irgendwie nicht auf die reihe Python 3.10 zu installieren...

    auf meinem anderen Raspi läuft es aber keine Ahnung warum.


    Hier meine Installations vorgehens weise.

    Raspian Buster lite Raspi 3B+

    Wlan location usw. konfiguriert, raspi-config update ebenso gemacht.


    mein Problem:

    sudo Python3 -V

    Python 3.9.2


    Python3 -V

    3.10.1


    selbiges gilt für pip3 3.9.2 bei sudo und 3.10.1 ohne...

    wenn ich explizit python 3.10 schreibe bzw. pip3.10 findet er is beide male.


    jedoch in komplett verschiedenen verzeichnissen...

    Einmal im User Pi und einmal lokal.


    Was mache ich falsch?


    Danke euch :) :conf:

  • echo "alias python3=python3.10" >> ~/.bashrc

    echo "alias pip3=pip3.10" >> ~/.bashrc

    source ~/.bashrc

    Hast du obiges nur als User ausgeführt? Dann ist es klar, dass root die Aliase python3 und pip3 nicht kennt. alias -p  zeigt dir die für die Sitzung/den User gültigen Aliase.

    jedoch in komplett verschiedenen verzeichnissen...

    Einmal im User Pi und einmal lokal.

    Heißt was? Zeige mal die Ausgaben der Befehle.

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Edited once, last by llutz ().

  • Hast du obiges nur als User ausgeführt? Dann ist es klar, dass root die Aliase python3 und pip3 nicht kennt. alias -p zeigt dir die für die Sitzung/den User gültigen Aliase.

    beides als user und als sudo / root leider ohne erfolg...



    Heißt was? Zeige mal die Ausgaben der Befehle.

    Ich installier gerade cryptography für pip habe überall 3.10 geschrieben...


    Laut ausgaben der pip3 -V


    pip3.10 bezieht sich auf python 3.10.1 in /usr/local/lib/python3.10.1

    mit sudo also python 3.9.2 greift er auf /usr/lib/python3.9.2 zu


    und ja das Alias hat er für sudo nicht gefressen obwohl ichs auch nochmal als sudo ausgeführt habe...

  • Hallo,


    grundsätzlich ist es auch überhaupt keine gute Idee, dass systemseitige Python durch eine andere Version zu ersetzen. Dafür hängt bei den meisten Linux-Distro zu viel an Python dran. Z.B. diverse Module, die systemseitig zusätzlich installiert werden, aber beim manuell installierten dann fehlen.

    Und wenn man das doch ganz dringend will, kann man das direkt bei der Installation erledigen lassen.


    Wenn du ein anderes als das systemseitige Python brauchst, dann gib' doch einfach die Version explizit beim Aufruf mit an.


    Und mal so rein Interesse halbe: welche spezielle Funktionalität aus Python 3.10, die Python 3.9 nicht hat, brauchst du?


    Gruß, noisefloor

  • Und mal so rein Interesse halbe: welche spezielle Funktionalität aus Python 3.10, die Python 3.9 nicht hat, brauchst du?

    Genau das gleiche hab ich mich auch gerade gefragt und grad nochmal alles plattgemacht. ich werd einfach die 3.9 lassen die drauf ist nud fertig.


    Ursprünglich dachte ich das man die Werkseitige Python Version so auf die aktuellste "Upgraden kann" aber da habe ich mich wohl geirrt :)

    Und wenn man das doch ganz dringend will, kann man das direkt bei der Installation erledigen lassen.

    Wie meisnt du das? beim flashen der SD Karte?

  • Hallo,

    Quote

    Ursprünglich dachte ich das man die Werkseitige Python Version so auf die aktuellste "Upgraden kann" aber da habe ich mich wohl geirrt

    Nein. Debian und alles, was darauf aufsetzt - also auch Raspbain - fährt kein Rolling-Release Modell. Die Hauptversion eines Programms ändert sich für einen Release nicht.

    Quote

    Wie meisnt du das? beim flashen der SD Karte?

    Nein, schon bei der manuelle Installation. Wenn ich mal Python manuell installieren muss, dann folge ich der Anleitung: https://wiki.ubuntuusers.de/Python/manuelle_Installation/. Sollte auch 1:1 auf Raspbian übertragbar sein.


    Gruß, noisefloor

  • Es fehlt:

    Code
    make install


    Wird dann nach /usr installiert.


    Eigentlich installiert man Programme nach /usr/local, sofern sie nicht über einen Paketmanager installiert werden.

    /usr/local hat dieselbe Struktur wie /usr/.


    Man kann Programm als User auch nach ~/.local/ installieren.

    Ich setze pyenv ein. Ist viel einfacher, geht schneller und mehrere Python-Installationen nebeneinander sind auch möglich.


    Die Parameter für die Konfiguration vor dem Kompilieren sind hier alle aufgelistet: https://docs.python.org/3/using/configure.html


    Hier mal das Script in angepasster Form:


    Als Systeminterpreter würde ich Python 3.10 aber nicht auf RPi OS laufen lassen, da viele Tools Python nutzen und zu 3.10 möglicherweise inkompatibel sind. Das Problem hat man bei neueren Distributionen, die auch neuere Python 3 Pakete einsetzen, nicht (bis auf ein paar Ausnahmen).


    Also update-alternatives würde ich erst gar nicht anfassen, um den Python-Interpreter Systemweit zu setzen.


    Möglicherweise möchte man libpython3.so haben (shared-library).

    Wenn man das will, muss man --enable-shared bei ./configure mit angeben.

    Ohne --enable-shared wird libpython statisch gelinkt.


    Dynamisch gelinkt ist z.B. sinvoll, wenn der Interpreter noch von vielen anderen Anwendungen genutzt wird. Das reduziert den memory footprint, da die shared-libraries nur einmal im RAM sein müssen und alle Prozesse darauf zugreifen können.