[geloest] Mehrere Python Versionen - pip verwendet die falsche python Version

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
sharbich
Beiträge: 346
Registriert: 27.09.2013 21:12:40

[geloest] Mehrere Python Versionen - pip verwendet die falsche python Version

Beitrag von sharbich » 29.10.2024 06:30:46

Hallo,
ich habe ein verzwicktes Problem. So wie ich das sehe sind bei mehrere Python Versionen installiert. Unter anderen die Version 3.11 und 3,10. Wobei die Version 3.11 die Standard Versin ist. pip hängt auf der Version 3.10. Jetzt möchte ich die Version 3.10 deinstallieren und pip auf die Version 3.11 hängen. Leider weiß ich nicht wie ich das machen kann? Hier einige Informationen zu Python und pip:

Code: Alles auswählen

root@dsme01:~# which python
/usr/bin/python
root@dsme01:~# cd /usr/bin
root@dsme01:/usr/bin# ls -l | grep python
lrwxrwxrwx 1 root    root            7 21. Apr 2023  fail2ban-python -> python3
lrwxrwxrwx 1 root    root           24 26. Aug 09:20 pdb3.11 -> ../lib/python3.11/pdb.py
lrwxrwxrwx 1 root    root           31  9. Apr 2023  py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx 1 root    root            7 17. Jun 15:36 python -> python3
lrwxrwxrwx 1 root    root           10  9. Apr 2023  python3 -> python3.11
-rwxr-xr-x 1 root    root      6839896 26. Aug 09:20 python3.11
lrwxrwxrwx 1 root    root           34 26. Aug 09:20 python3.11-config -> x86_64-linux-gnu-python3.11-config
lrwxrwxrwx 1 root    root           17  9. Apr 2023  python3-config -> python3.11-config
lrwxrwxrwx 1 root    root           14 17. Jun 15:36 python-config -> python3-config
-rwxr-xr-x 1 root    root         3077 26. Aug 09:20 x86_64-linux-gnu-python3.11-config
lrwxrwxrwx 1 root    root           34  9. Apr 2023  x86_64-linux-gnu-python3-config -> x86_64-linux-gnu-python3.11-config
root@dsme01:/usr/bin# pip --version
pip 24.3.1 from /usr/local/lib/python3.10/site-packages/pip (python 3.10)
Habt Ihr eine Idee wie ich das hinbekomme?
Gruß von Stefan Harbich
Zuletzt geändert von sharbich am 29.10.2024 21:57:38, insgesamt 1-mal geändert.

Benutzeravatar
TRex
Moderator
Beiträge: 8314
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Mehrere Python Versionen - pip verwendet die falsche python Version

Beitrag von TRex » 29.10.2024 07:14:38

Also ich finde, dass du pip nicht ohne virtualenv verwenden solltest. Wenn du das tust, hast du das Problem nicht mehr. Ansonsten hast du noch die Möglichkeit, pip als Modul statt als binary zu verwenden:

Code: Alles auswählen

python3.10 -m pip install ...
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

sharbich
Beiträge: 346
Registriert: 27.09.2013 21:12:40

Re: Mehrere Python Versionen - pip verwendet die falsche python Version

Beitrag von sharbich » 29.10.2024 08:00:32

Hallo,
ich möchte die Python Version 3.10 und pip löschen. Das bekomme ich aber nicht hin. Die Version 3.10 wird mir im Paketmanager nicht angezeigt:

Code: Alles auswählen

root@dsme01:/usr/bin# dpkg -l python*
dpkg-query: Kein Paket gefunden, das auf python3.11-config passt
dpkg-query: Kein Paket gefunden, das auf python3-config passt
dpkg-query: Kein Paket gefunden, das auf python-config passt
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/
         Halb installiert/Trigger erWartet/Trigger anhängig
|/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)
||/ Name           Version          Architektur  Beschreibung
+++-==============-================-============-=========================================================================
rc  python         2.7.16-1         amd64        interactive high-level object-oriented language (Python2 version)
ii  python3        3.11.2-1+b1      amd64        interactive high-level object-oriented language (default python3 version)
ii  python3.11     3.11.2-6+deb12u3 amd64        Interactive high-level object-oriented language (version 3.11)

Huo
Beiträge: 778
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: Mehrere Python Versionen - pip verwendet die falsche python Version

Beitrag von Huo » 29.10.2024 10:29:54

Offenbar hast Du python3.10 und pip lokal am Paketsystem vorbei nach /usr/local/lib/ installiert bzw. kompiliert.

Aufschluss gibt:

Code: Alles auswählen

whereis python3 pip
und

Code: Alles auswählen

ls -lR /usr/local/lib/python3.10
Falls Du keinen Quelltext mit uninstall-Funktion o.Ä. hast, kannst Du, denke ich, relativ bedenkenlos einfach die fraglichen python-Dateien aus /usr/local/lib/ löschen.

sharbich
Beiträge: 346
Registriert: 27.09.2013 21:12:40

Re: Mehrere Python Versionen - pip verwendet die falsche python Version

Beitrag von sharbich » 29.10.2024 11:29:48

TRex hat geschrieben: ↑ zum Beitrag ↑
29.10.2024 07:14:38

Code: Alles auswählen

python3.10 -m pip install ...
Wenn ich versuche pip unter python 3.11 zu installieren bekomme ich folgenden Hinweis.

Code: Alles auswählen

root@dsme01:~# python3.11 -m pip install pg8000
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.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
    
    See /usr/share/doc/python3.11/README.venv for more information.

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.
Ich brauche das pg8000 Paket aber. Siehe Link: https://docs.bareos.org/TasksAndConcept ... sql-plugin

Gemäß:
Voraussetzungen für das PostgreSQL-Plugin
Dieses Plugin ist ein Bareos Python 3-Plugin. Es erfordert PostgreSQL-Clusterversion >= 10 und die Installation des Python-Moduls pg8000 >= 1.16.
Seit Version >= 21 wurde das Plugin auf das Python-Modul pg8000 geändert, mit einer erforderlichen Mindestversion von 1.16 anstelle von psycopg2, und die Verwendung von Python >= 3.6 ist obligatorisch.
Wenn ein von der Distribution bereitgestelltes pg8000-Paket vorhanden ist und dieselbe oder eine neuere Version aufweist, kann es verwendet werden. Andernfalls muss es mit dem Befehl pip3 install pg8000 installiert werden.

Huo
Beiträge: 778
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: Mehrere Python Versionen - pip verwendet die falsche python Version

Beitrag von Huo » 29.10.2024 11:48:25

sharbich hat geschrieben: ↑ zum Beitrag ↑
29.10.2024 11:29:48
Wenn ich versuche [mit] pip unter python 3.11 zu installieren bekomme ich folgenden Hinweis.
Könntest Du nicht dem Hinweis folgen und aus den Debian-Paketquellen das Paket Debianpython3-pg8000 installieren? pip brauchst Du doch für dieses und viele andere Python-Module gar nicht. Prüfe am besten immer zuerst, ob es nicht ein Paket "python3-Modulname" gibt.

sharbich
Beiträge: 346
Registriert: 27.09.2013 21:12:40

Re: Mehrere Python Versionen - pip verwendet die falsche python Version

Beitrag von sharbich » 29.10.2024 13:33:16

Hallo,
ich kann das Debian Paket nicht verwenden, weil ich eine höhere Version benötige.

"This plugin is a Bareos Python 3 plugin. It requires PostgreSQL cluster version >= 10 and the Python module pg8000 >= 1.16 to be installed."

Huo
Beiträge: 778
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: Mehrere Python Versionen - pip verwendet die falsche python Version

Beitrag von Huo » 29.10.2024 16:03:12

Die Warnung, die pip in der neuesten Version auswirft, weist auf die Gefahr von Unverträglichkeiten zwischen pip-Installationen und Paketen der Distribution hin. Falls Du das Risiko eingehen willst, kannst Du laut Warnhinweis die Installation mit pip erzwingen:

Code: Alles auswählen

python3 -m pip install pg8000 --break-system-packages
(ungetestet, da ich seit längerem kein pip mehr nutze)

Oder Du wechselst auf Debian trixie (testing), das pg8000 in der Version 1.31 bereitstellt.

Benutzeravatar
TRex
Moderator
Beiträge: 8314
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Mehrere Python Versionen - pip verwendet die falsche python Version

Beitrag von TRex » 29.10.2024 17:30:36

sharbich hat geschrieben: ↑ zum Beitrag ↑
29.10.2024 11:29:48
TRex hat geschrieben: ↑ zum Beitrag ↑
29.10.2024 07:14:38

Code: Alles auswählen

python3.10 -m pip install ...
Wenn ich versuche pip unter python 3.11 zu installieren bekomme ich folgenden Hinweis.

Code: Alles auswählen

root@dsme01:~# python3.11 -m pip install pg8000
error: externally-managed-environment
Ja, und darum mein erster Teil vom Beitrag, den du zumindest nicht zitiert, aber auch vielleicht nicht beachtet hast. Verwende ein Virtualenv ODER verzichte auf pip (und verwende das systemweit mit apt zu installierende Debianpython3-pg8000). Da wir jetzt mehr Informationen haben als zum Zeitpunkt des letzten Beitrags, wissen wir natürlich auch, dass das keine Option ist - zumindest letzteres, ersteres könnte in Gefrickel enden. Mit den neuen Informationen schließe ich aber auf die Verwendung von Fremdrepos - haben die denn auch erklärt, dass das Repo für deine debian-Version verwendbar sein soll? Ich will dir nicht erklären, dass Fremdrepos böse sind - aber dass sie eben mit solchen Folgefragen behaftet sind.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

sharbich
Beiträge: 346
Registriert: 27.09.2013 21:12:40

Re: Mehrere Python Versionen - pip verwendet die falsche python Version

Beitrag von sharbich » 29.10.2024 21:57:20

Huo hat geschrieben: ↑ zum Beitrag ↑
29.10.2024 16:03:12
Die Warnung, die pip in der neuesten Version auswirft, weist auf die Gefahr von Unverträglichkeiten zwischen pip-Installationen und Paketen der Distribution hin. Falls Du das Risiko eingehen willst, kannst Du laut Warnhinweis die Installation mit pip erzwingen:

Code: Alles auswählen

python3 -m pip install pg8000 --break-system-packages
(ungetestet, da ich seit längerem kein pip mehr nutze)
Ich habe die Python Version 3.10 und pip manuell gelöscht und mit dem obigen Befehl pip, sowie das Paket pg8000 installiet. Alles funktioniert super.
Gruß von Stefan Harbich

Antworten