Ich verwende pip mit einer Anforderungsdatei in einer virtuellen Umgebung für meine Django-Projekte. Ich versuche, einige Pakete zu aktualisieren, insbesondere Django selbst, und es wird eine Fehlermeldung zu Quellcodekonflikten angezeigt:
Source in `<virtualenv`>/build/Django has version 1.2.3 that conflicts with Django==1.2.4 (from -r requirements/apps.txt (line 3))
Das ist nach dem Aktualisieren der Versionsnummer von Django von 1.2.3 auf 1.2.4 in meiner Anforderungsdatei. Ich verwende diesen Befehl, um das Upgrade tatsächlich durchzuführen:
pip --install --upgrade -E `<virtualenv dir`> --requirement `<requirements file`>
Ich kann kein Flag finden, das einen erneuten Download des Gesamtpakets auslöst. Ich habe sogar versucht, zuerst einen Deinstallationsbefehl auszuführen, dann die Installation, aber keine Würfel. Vielleicht fehlt mir etwas?
django
virtualenv
pip
gcaprio
quelle
quelle
Antworten:
Ich bin mir nicht sicher, ob es genau Ihr Problem ist, aber in meinem Fall konnte ich Django nicht auf 1.2.4 aktualisieren. Ich war immer mit der Version 1.2.3 fertig und habe Django deinstalliert mit:
Dann habe ich das
<virtualenv>/build/Django
Verzeichnis entfernt und schließlich die richtige Version installiert mit:Hoffe das wird helfen.
quelle
pip install Django -U
oderpip install Django --upgrade
wie in der Antwort von @JoeyG beschrieben.Ich habe den folgenden Befehl ausgeführt und er wurde von 1.2.3 auf 1.4.0 aktualisiert
Verknüpfung für das Upgrade:
Hinweis : Wenn für das Paket, das Sie aktualisieren, Anforderungen gelten, aktualisiert dieser Befehl zusätzlich alle Anforderungen auf die neuesten verfügbaren Versionen. In neueren Versionen von pip können Sie dieses Verhalten durch Angabe verhindern
--upgrade-strategy only-if-needed
. Mit diesem Flag werden Abhängigkeiten nicht aktualisiert, es sei denn, die installierten Versionen der abhängigen Pakete erfüllen nicht mehr die Anforderungen des aktualisierten Pakets.quelle
pip install Requests --upgrade
und nur „Anfragen“ aufgerüstet wurde. Die Beschreibung lautet "Alle angegebenen Pakete aktualisieren ", wenn ich die Dokumente ansehe.pip install --upgrade django==1.4.0
gemäß pip docs Beispiel 3
Nach meiner Erfahrung wird mit dieser Methode jedoch auch jedes damit verbundene Paket aktualisiert. Beispiel:
Angenommen, Sie möchten ein Upgrade durchführen
somepackage
, fürdjango >= 1.2.4
das diese Methode erforderlich ist. Außerdem wird ein Upgradesomepackage
UNDdjango
auf das neueste Update durchgeführt. Nur um sicher zu gehen, tun Sie:somepackage
Wenn Sie dies tun, wird Django auf die Version 1.2.4 aktualisiert und beibehaltenquelle
django
dem Beispiel begonnen haben, das Sie verwenden,somepackage
und danndjango
als Abhängigkeit verwenden.Der Verknüpfungsbefehl für
--upgrade
:Ist:
quelle
Wenn Sie ein Paket aktualisieren, wird das alte deinstalliert.
Eine bequeme Möglichkeit, dies zu tun, besteht darin, diesen Pip-Upgrader zu verwenden, der auch die Versionen in Ihrem aktualisiert
requirements.txt
Datei für die ausgewählten Pakete (oder alle Pakete) .Installation
Verwendungszweck
Aktivieren Sie Ihre virtuelle Umgebung (wichtig, da dadurch auch die neuen Versionen aktualisierter Pakete in der aktuellen virtuellen Umgebung installiert werden).
cd
in Ihr Projektverzeichnis, und führen Sie dann Folgendes aus:Erweiterte Verwendung
Wenn die Anforderungen an einem nicht standardmäßigen Speicherort platziert sind, senden Sie sie als Argumente:
Wenn Sie bereits wissen, welches Paket Sie aktualisieren möchten, senden Sie es einfach als Argumente:
Wenn Sie ein Upgrade auf die Pre-Release- / Post-Release-Version durchführen müssen, fügen Sie hinzu
--prerelease
Ihrem Befehl ein Argument hinzu.Vollständige Offenlegung: Ich habe dieses Paket geschrieben. Ich hoffe es hilft.
quelle
pip-upgrade -p all
Aktualisiert alle Ihre Pakete und aktualisiert die Anforderungsdatei, ohne dass Sie Eingaben benötigen.Wenn Sie nur ein bestimmtes Paket mit dem Namen aktualisieren möchten,
somepackage
lautet der Befehl, den Sie in neueren Versionen von pip verwenden solltenDies ist sehr nützlich, wenn Sie eine Anwendung in Django entwickelt haben, die derzeit nur mit einer bestimmten Version von Django (z. B. Django = 1.9.x) funktioniert und ein abhängiges Paket mit einer Fehlerbehebung / neuen Funktion aktualisieren möchte und das aktualisierte Paket davon abhängt auf django (funktioniert aber mit etwa jeder Version von django nach 1.5). Das Standardverhalten von
pip install --upgrade django-some-package
wäre, Django auf die neueste verfügbare Version zu aktualisieren, die andernfalls Ihre Anwendung beschädigen könnte, obwohl die--upgrade-strategy only-if-needed
abhängigen Pakete jetzt nur bei Bedarf aktualisiert werden.quelle
Normalerweise räumt pip nach sich selbst auf und entfernt den Inhalt des Build-Verzeichnisses. Dies geschieht nur dann nicht, wenn:
--no-install
Option verwendetIn allen anderen Fällen sollten Sie kein
build
Verzeichnis haben, das Ihre Umgebung verstopft.quelle
Das Definieren einer bestimmten Version für das Upgrade hat mir geholfen, anstatt nur den Befehl zum Aktualisieren.
quelle
das löste für mich das Problem "pip install -I --upgrade psutil --force" danach deinstalliere einfach psutil mit der neuen Version und hoffe du kannst plötzlich die ältere Version installieren (:
quelle
Ich benutze das:
quelle