wake-up-neo.com

Bypass-Bestätigungsaufforderung zur Deinstallation der Pipes

Ich versuche, alle Django-Pakete in meiner Superuser-Umgebung zu deinstallieren, um sicherzustellen, dass alle meine Webapp-Abhängigkeiten auf meiner Virtualenv installiert sind. 

Sudo su
Sudo pip freeze | grep -E '^Django-' | xargs pip -q uninstall

Pip möchte jedoch die Deinstallation jedes Pakets bestätigen, und es scheint keine Option -y für pip zu geben. Gibt es eine bessere Möglichkeit, einen Stapel von Python-Modulen zu deinstallieren? Ist rm -rf .../site-packages/ ein richtiger Weg? Gibt es eine easy_install-Alternative? 

Alternativ wäre es besser, Pip zu zwingen, alle Abhängigkeiten in der virtuellen Umgebung zu installieren, anstatt sich auf die System-Python-Module zu verlassen, um diese Abhängigkeiten zu erfüllen, z. pip --upgrade install, aber erzwingen, dass sogar ebenso alte Versionen installiert werden, um alle Systemmodule zu überschreiben. Ich habe versucht, meine virtualenv und dann pip install --upgrade -r requirements.txt zu aktivieren, und das scheint die Abhängigkeiten zu installieren, selbst die, die in meinem Systempfad vorhanden sind. Und man pip scheint dieses Verhalten nicht zu garantieren (d. H. Installieren der gleichen - Version eines Pakets, das bereits in den System-Site-Paketen vorhanden ist).

50
hobs

ab der Pip-Version 7.1.2 können Sie pip uninstall -y <python package> ausführen.

110
gbozee

Pip enthält KEINE Option --yes (ab Pip-Version 1.3.1).

Abhilfe: Pipe ja dazu!

$ Sudo ls  # enter pw so not prompted again
$ /usr/bin/yes | Sudo pip uninstall pymongo
59
Kevin J. Rice

Wenn Sie jedes Paket von requirements.txt deinstallieren möchten,

pip uninstall -y -r requirements.txt
5
akilesh raj

Lakshman Prasad hatte recht, pip --upgrade und/oder virtualenv --no-site-packages ist der richtige Weg. Das Deinstallieren der systemweiten Python-Module ist schlecht. 

Die --upgrade-Option für das Piping installiert die erforderlichen Module in der virtuellen Umgebung, selbst wenn sie bereits in der Systemumgebung vorhanden sind, und selbst wenn die erforderliche Version oder die aktuellste verfügbare Version der Systemversion entspricht. 

pip --upgrade install

Durch die Verwendung der Option --no-site-packages beim Erstellen der virtuellen Umgebung wird sichergestellt, dass fehlende Abhängigkeiten nicht durch das Vorhandensein fehlender Module im Systempfad maskiert werden können. Dies hilft, Probleme während der Migration eines Moduls von einem Paket zu einem anderen aufzudecken, z. pinax.apps.groups -> Django-Gruppen, insbesondere wenn das Problem darin besteht, templatetags-Anweisungen in Django zu laden, die alle verfügbaren Module nach templatetags-Verzeichnissen und den darin enthaltenen Tag-Definitionen durchsuchen.

1
hobs

Alternativ wäre es besser, Pip zu zwingen, alle Abhängigkeiten in der virtuellen Umgebung zu installieren, anstatt sich auf die System-Python-Module zu verlassen, um diese Abhängigkeiten zu erfüllen.

Ja. Machen Sie sich nicht zu viel mit den eingebauten, vom System installierten Paketen. Viele der Systempakete, insbesondere unter OS X (sogar das Debian-Paket und die abgeleiteten Varianten) sind zu stark von ihnen abhängig.

pip --upgrade install installieren, aber erzwingt, dass auch gleich ältere Versionen installiert werden, um alle Systemmodule zu überschreiben.

Es sollte keine große Sache sein, wenn im venv noch ein paar weitere Pakete installiert sind, die bereits im Systempaket enthalten sind, insbesondere wenn sie eine andere Version haben. Das ist der springende Punkt von Virtualenv.

Ich habe versucht, Virtualenv zu aktivieren und dann --upgrade -r Requirements.txt zu installieren. Das scheint die Abhängigkeiten zu installieren, auch die in meinem Systempfad. Ich kann mir jedoch nicht sicher sein, ob meine Systemmodule alt sind. Man pip scheint dieses Verhalten nicht zu garantieren (d. H. Das Installieren der gleichen Version eines Pakets, das bereits in den System-Site-Paketen vorhanden ist).

Nein, es werden die Pakete, die bereits in der Hauptinstallation vorhanden sind, nicht installiert, es sei denn, Sie haben das Flag --no-site-packages verwendet, um es zu erstellen, oder die erforderliche und die aktuelle Version sind unterschiedlich.

1
Lakshman Prasad
pip install -U xxxx 

kann umgehen umgehen 

0
Prime Lee