Wie installiere ich ein Pip-Paket global statt lokal?

98

Ich versuche, das flake8-Paket mit pip3 zu installieren, und es scheint, dass es die Installation ablehnt, da es bereits an einem lokalen Ort installiert ist.

Wie kann ich die globale Installation erzwingen (Systemebene)?

pip3 install flake8
Requirement already satisfied (use --upgrade to upgrade): flake8 in ./.local/lib/python3.4/site-packages

Bitte beachten Sie, dass ich eine generische Lösung bevorzugen würde (die unter Debian, OS X oder sogar Windows funktionieren sollte), die auf jeder Plattform verwendet werden sollte, damit ich das Ziel nicht selbst angeben möchte.

Aus irgendeinem seltsamen Grund verhält es sich so, als hätte ich bereits angegeben, --userwas ich in meinem Fall nicht getan habe.

Die einzige Möglichkeit, ein Paket global zu installieren, bestand darin, es zuerst zu entfernen und danach erneut zu installieren. Irgendwie scheint es, dass pip (8.1.1) sich weigert, ein Paket global zu installieren, wenn es lokal existiert.

Haftungsausschluss: Während der Experimente wurden keine virtuellen Umgebungen verwendet oder beschädigt.

Sorin
quelle
3
Haben Sie es von Root User oder Sudo versucht?
Matino
Hast du es versucht pip install flake8 --upgrade?
Mauro Baraldi
Bei ähnlichen Problemen im Zusammenhang mit der Verwendung virtueller Umgebungen (venv) verwenden Sie die --system-site-packagesOption, um global installierte Pakete in Ihr venv zu erben. Siehe stackoverflow.com/a/61326709/4445175
Wlad

Antworten:

136

Warum versuchst du es nicht sudomit der HFlagge? Dies sollte den Trick tun.

sudo -H pip install flake8

Ein Stammgast sudo pip install flake8wird versuchen, Ihr eigenes Home-Verzeichnis zu verwenden. Der -Hweist es an, das Home-Verzeichnis des Systems zu verwenden. Weitere Informationen unter https://stackoverflow.com/a/43623102/

nikhilweee
quelle
97
Hwie in Hlobal?
Matt
63
-HWie in Hey Sudo, hör auf, mein Home-Verzeichnis zu benutzen. Verwenden Sie Hstattdessen Ihr eigenes Ome-Verzeichnis. stackoverflow.com/a/43623102
nikhilweee
6
Dies installiert es nicht wirklich global, sondern scheint es nur im Home-Verzeichnis des Benutzers 'root' zu speichern
parsecpython
@nikhilweee Ich verstehe nicht, wie dies anders ist als pip3 install ipythonwenn virtualenv deaktiviert ist, sie scheinen in demselben site-packagesVerzeichnis zu installieren .
iamfrancisyo
@parsecpython für mich macht es den Trick und installiert die Pakete in /usr/local/lib/python3.8/dist-packages, wo ich sie gemeint habe
yota
8

Vielleicht --force-reinstallwürde es funktionieren, sonst --ignore-installedsollte es den Trick machen.

Manuel
quelle
5

Benutzt du virtualenv? Wenn ja, deaktivieren Sie die virtuelle Umgebung. Wenn Sie nicht verwenden, ist es bereits weit verbreitet (Systemebene). Versuchen Sie, das Paket zu aktualisieren.

pip install flake8 --upgrade
Mauro Baraldi
quelle
2
Nicht ganz richtig.
GMaster
2

Ich sehe Ihr Problem eigentlich nicht. Global ist jedes Paket, das sich im Site-Paketordner Ihres Python3-Pfads befindet.

Wenn Sie es nur lokal verwenden möchten, müssen Sie eine virtuelle Umgebung konfigurieren und die Pakete mit einer aktivierten virtuellen Umgebung neu installieren.

ZÜNDETE
quelle
Wenn Sie ein Venv erstellen, können Sie --system-site-packages .venv/devglobale Pakete erben, damit Sie sie nicht in jedem Venv neu installieren müssen. Dies ist sinnvoll für Pakete, die in jedem Projekt verwendet werden sollen, z. B. schwarz, flake8, pytest. Beispiel:python -m venv --system-site-packages .venv/dev
Wlad
-1

Wo finden Pip-Installationen in Python statt?

Ich werde eine Windows-Lösung geben, mit der ich konfrontiert war und deren Lösung eine Weile gedauert hat.

In Windows (ich nehme hier Windows als Betriebssystem) pip install <package_name>wird es zunächst standardmäßig global installiert ( wenn Sie keine virtuelle Umgebung aktiviert haben ). Sobald Sie eine virtuelle Umgebung aktivieren und sich darin befinden, befinden sich alle Pip-Installationen in dieser virtuellen Umgebung.


pip installiert die genannten Pakete, aber ich kann sie nicht verwenden ?

Für diese pip möglicherweise eine Warnung gebe, die pip Executables mögen pip3.exe, pip.exesind nicht auf dem Weg variabel. Dazu können Sie diesen Pfad (normalerweise - C:\Users\<your_username>\AppData\Roaming\Programs\Python\) zu Ihren Umgebungsvariablen hinzufügen . Starten Sie danach Ihr neu cmdund versuchen Sie nun, Ihr installiertes Python-Paket zu verwenden. Es sollte jetzt funktionieren.

Instinkt
quelle