J'utilise pip avec un fichier de configuration, dans virtualenv, pour mes projets Django. J'essaie de mettre à jour certains paquets, notamment Django lui-même, et j'obtiens une erreur concernant les conflits de code source:
Source in `<virtualenv`>/build/Django has version 1.2.3 that conflicts with Django==1.2.4 (from -r requirements/apps.txt (line 3))
C'est après la mise à jour du numéro de version de Django de 1.2.3 à 1.2.4 dans mon fichier de configuration. J'utilise cette commande pour effectuer la mise à niveau:
pip --install --upgrade -E `<virtualenv dir`> --requirement `<requirements file`>
Je ne trouve aucun indicateur qui déclenche un re-téléchargement total du package. J'ai même essayé d'exécuter une commande de désinstallation d'abord, puis l'installation mais pas de dés. Peut-être que je manque quelque chose?
Je ne sais pas si c'est vraiment votre problème, mais dans mon cas, je n'ai pas pu mettre à jour Django vers 1.2.4 - je finissais toujours avec la version 1.2.3, j'ai donc désinstallé Django avec:
<virtualenv>/bin/pip uninstall Django
Ensuite, j'ai supprimé le répertoire <virtualenv>/build/Django
et finalement j'ai installé la version appropriée avec:
<virtualenv>/bin/pip install Django
J'espère que cela aidera.
J'ai exécuté la commande suivante et il est passé de 1.2.3 à 1.4.0
pip install Django --upgrade
Raccourci pour la mise à niveau:
pip install Django -U
Remarque : si le paquet que vous mettez à niveau a des exigences, cette commande met également à niveau toutes les exigences avec les dernières versions disponibles. Dans les versions récentes de pip, vous pouvez empêcher ce problème en spécifiant --upgrade-strategy only-if-needed
. Avec cet indicateur, les dépendances ne seront pas mises à niveau à moins que les versions installées des packages dépendants ne répondent plus aux exigences du package mis à niveau.
selon pip docs exemple 3
pip install --upgrade Django
mais sur la base de mon expérience, l’utilisation de cette méthode mettra également à niveau tous les packages qui y sont liés. exemple:
Supposons que vous souhaitiez mettre à niveau somepackage
nécessitant Django >= 1.2.4
à l'aide de ce type de méthode, il mettra également à niveau somepackage
ET Django
vers la dernière mise à jour. Juste pour être en sécurité faire:
# assume you want to keep Django 1.2.4
pip install --upgrade somepackage Django==1.2.4
Cela permettra de mettre à jour somepackage
et de garder Django vers la version 1.2.4
La commande de raccourci pour --upgrade
:
pip install Django --upgrade
Est:
pip install Django -U
Si vous souhaitez uniquement mettre à niveau un package spécifique appelé somepackage
, la commande à utiliser dans les versions récentes de pip est
pip install --upgrade --upgrade-strategy only-if-needed somepackage
Ceci est très utile lorsque vous avez développé une application dans Django qui ne fonctionnera actuellement qu'avec une version spécifique de Django (par exemple, Django = 1.9.x) et que vous souhaitez mettre à niveau un paquet dépendant avec une correction de bogue/une nouvelle fonctionnalité et le paquet mis à niveau dépendent de Django (mais fonctionne avec n'importe quelle version de Django après la version 1.5). Le comportement par défaut de pip install --upgrade Django-some-package
consiste à mettre à niveau Django vers la dernière version disponible, ce qui risquerait sinon de casser votre application, bien que les packages dépendants --upgrade-strategy only-if-needed
ne soient mis à niveau que si nécessaire.
Si vous mettez à jour un paquet, l'ancien sera désinstallé.
Pour ce faire, utilisez un pip-upgrader qui met également à jour les versions de votre fichier requirements.txt
pour les packages choisis (ou tous les packages).
Installation
pip install pip-upgrader
Utilisation
Activez votre virtualenv (important, car il installera également les nouvelles versions des packages mis à niveau dans le virtualenv actuel).
cd
dans le répertoire de votre projet, puis exécutez:
pip-upgrade
Utilisation avancée
Si les exigences sont placées dans un emplacement non standard, envoyez-les sous forme d'arguments:
pip-upgrade path/to/requirements.txt
Si vous savez déjà quel paquet vous voulez mettre à jour, envoyez-les simplement comme arguments:
pip-upgrade -p Django -p celery -p dateutil
Si vous devez effectuer une mise à niveau vers une version préliminaire ou postérieure, ajoutez l'argument --prerelease
à votre commande.
Divulgation complète: j'ai écrit ce paquet. J'espère que ça aide.
Normalement, pip se nettoie et supprime le contenu du répertoire de construction. La seule fois où cela ne se produit pas, c'est si:
--no-install
Dans tous les autres cas, vous ne devriez pas avoir le répertoire build
qui obstrue votre environnement.
cela a résolu pour moi le problème "pip install -I --upgrade psutil --force", il suffit ensuite de désinstaller psutil avec la nouvelle version et hop vous pouvez installer tout à coup l’ancienne version (: