Für Benutzer der Ubuntu-Familie, Debian, Linux Mint
Dank der obigen Erklärung von Anthony können Sie Ihre ursprüngliche System-Pip (in / usr / bin / und dist-packages /) beibehalten und die manuell installierte Pip (in ~ / .local /) entfernen, um den Konflikt zu lösen:
$ python3 -m pip uninstall pip
Ubuntu / Debian pip v8.1.1 (16.04) aus dem Debian- python3-pip
Paket (siehe $ pip3 -V
) zeigt die gleichen Suchergebnisse wie das neueste pip v10.0.1 und installiert die neuesten Module von PyPI einwandfrei. Es verfügt über einen funktionierenden pip
Befehl (bereits im $ PATH enthalten) sowie die --user
seit 2016 standardmäßig eingebaute nette Option. In den neueren Versionen geht es hauptsächlich um anwendungsfallspezifische Fehlerkorrekturen und bestimmte neue Funktionen, also nicht Jeder muss sich noch beeilen, Pip aufzurüsten. Und der neue Pip 10 kann sowieso auf Python Virtualenvs bereitgestellt werden.
Unabhängig von Pips ermöglicht Ihr Betriebssystem jedoch die schnelle Installation gängiger Python-Module (einschließlich Numpy) mit APT, ohne dass Pip erforderlich ist, z. B.:
$ sudo apt install python3-numpy python3-scipy
(Mit Systemabhängigkeiten)
$ sudo apt install python3-pip
(Debian-gepatchter Pip, etwas älter, aber egal)
Schnelle Erinnerung an die passende Syntax (siehe man apt
Details):
$ sudo apt update
(zum erneuten Synchronisieren von Ubuntu-Paketindexdateien aus aktuellen Quellen)
$ apt search <python-package-name>
(Volltextsuche für alle verfügbaren Pakete)
$ apt show <python-package-name>
(zeigt die detaillierte Paketbeschreibung an)
$ sudo apt install <python-package-name>
Paketnamen mit dem Präfix python-
sind für Python 2; und mit dem Präfix python3-
sind für Python 3 (zB Python3-Pandas). Es gibt Tausende und sie werden Integrationstests in Debian und Ubuntu unterzogen. Sofern Sie nicht versuchen, auf Benutzerebene ( pip install --user
Option) oder in virtualenv / venv zu installieren , könnte apt das sein, was Sie benötigen. Auf diese Systempakete kann auch über virtuelle Envs zugegriffen werden, da virtualenv beim Import problemlos auf die Verwendung von Systembibliotheken zurückgreift, wenn Ihre Envs keine Kopien von Modulen angegeben haben. Ihre benutzerdefinierten (mit pip --user
) Module pro Benutzer ~/.local/lib
überschreiben diese ebenfalls.
Da es sich um eine systemweite Installation handelt, müssen Sie diese selten entfernen (Sie müssen die Betriebssystemabhängigkeiten berücksichtigen). Dies ist praktisch für Pakete mit vielen Systemabhängigkeiten (z. B. mit scipy oder matplotlib), da APT alle erforderlichen Systembibliotheken und C-Erweiterungen verfolgt und bereitstellt, während Sie mit pip keine solchen Garantien haben .
Tatsächlich erwartet Ubuntu für systemweite Python-Pakete (im Gegensatz zu Benutzer-, Home-Dir-Level oder niedriger), dass der APT-Paketmanager verwendet wird (und nicht sudo pip
), um einen Betriebssystemausfall zu vermeiden: Er sudo pip3
zielt auf dasselbe /usr/lib/python3/dist-packages
Verzeichnis ab, in dem APT das Betriebssystem speichert -empfindliche Module. Neuere Debian / Ubuntu-Versionen hängen stark von Python 3 ab, daher werden die vorinstallierten Module von verwaltet apt
und sollten nicht geändert werden.
Wenn Sie den pip3 install
Befehl verwenden, stellen Sie bitte sicher, dass er in einer isolierten virtuellen Entwicklungsumgebung ausgeführt wird , z. B. mit virtualenv ( sudo apt install python3-virtualenv
) oder mit Python3 ( -m venv
)) oder auf Benutzerebene ( --user
Option pip, Standardeinstellung in Ubuntu) pip seit 2016), aber nicht systemweit (nie sudo pip3
!), da pip den Betrieb des APT-Paketmanagers stört und Ubuntu-Betriebssystemkomponenten beeinträchtigen kann, wenn ein vom System verwendetes Python-Modul unerwartet geändert wird. Viel Glück!
P. S. Alles oben Genannte ist für die "ideale" Lösung (Debian / Ubuntu-Weg).
Wenn Sie noch die neue PIP3 v10 ausschließlich verwenden möchten, gibt es 3 schnelle Lösungen:
- Öffnen Sie einfach eine neue Bash-Sitzung (eine neue Terminal-Registerkarte oder einen neuen Typ
bash
) - und pip3 v10 wird verfügbar (siehe pip3 -V
). debians pip3 v8 bleibt installiert, ist aber kaputt; oder
- Der Befehl
$ hash -d pip3 && pip3 -V
zum Aktualisieren des pip3-Pfadnamens im $ PATH. debians pip3 v8 bleibt installiert, ist aber kaputt; oder
- der Befehl
$ sudo apt remove python3-pip && hash -d pip3
, debians pip3 v8 vollständig zu deinstallieren, zugunsten Ihres neuen pip3 v10.
Hinweis: Sie müssen --user
jedem nicht von Debian bereitgestellten Pip immer ein Flag hinzufügen , es sei denn, Sie befinden sich in einer virtuellen Umgebung! (Es stellt Python-Pakete ~/.local/
für bereit, standardmäßig in den von Debian / Ubuntu bereitgestellten Python3-Pip und Python-Pip seit 2016). Ihre systemweite Verwendung von pip 10 außerhalb von virtualenv wird von Ubuntu / Debian nicht wirklich unterstützt. Niemals sudo pip3
!
Weitere Details:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100