J'utilise pip avec un fichier d'exigences, dans un virtualenv, pour mes projets Django. J'essaie de mettre à niveau certains packages, 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 avoir mis à jour le numéro de version de Django de 1.2.3 à 1.2.4 dans mon fichier d'exigences. J'utilise cette commande pour faire 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?
django
virtualenv
pip
gcaprio
la source
la source
Réponses:
Je ne sais pas si c'est exactement votre problème, mais dans mon cas, je n'ai pas pu mettre à niveau Django vers 1.2.4 - je terminais toujours avec la version 1.2.3, j'ai donc désinstallé Django avec:
Ensuite, j'ai supprimé le
<virtualenv>/build/Django
répertoire et enfin j'ai installé la bonne version avec:J'espère que cela vous aidera.
la source
pip install Django -U
oupip install Django --upgrade
comme décrit dans la réponse de @JoeyG.J'ai exécuté la commande suivante et elle est passée de 1.2.3 à 1.4.0
Raccourci pour la mise à niveau:
Remarque : si le package que vous mettez à niveau a des exigences, cette commande mettra également à niveau toutes les exigences vers les dernières versions disponibles. Dans les versions récentes de pip, vous pouvez empêcher ce comportement en spécifiant
--upgrade-strategy only-if-needed
. Avec cet indicateur, les dépendances ne seront pas mises à niveau sauf si les versions installées des packages dépendants ne satisfont plus aux exigences du package mis à niveau.la source
pip install Requests --upgrade
et seules les "demandes" ont été mises à niveau. La description indique "mettre à niveau tous les packages spécifiés " lorsque je consulte les documents.pip install --upgrade django==1.4.0
selon pip docs exemple 3
mais sur la base de mon expérience, l'utilisation de cette méthode mettra également à niveau tout package s'y rapportant. exemple:
Supposons que vous souhaitiez effectuer une mise à niveau
somepackage
nécessitant l'django >= 1.2.4
utilisation de ce type de méthode, il mettra également à niveausomepackage
ETdjango
vers la dernière mise à jour. Juste pour être sûr, faites:Faire cela mettra à jour
somepackage
et gardera Django à la version 1.2.4la source
django
comme package principal puis dans l'exemple que vous utilisezsomepackage
puis utilisezdjango
comme dépendance.La commande de raccourci pour
--upgrade
:Est:
la source
Si vous mettez à niveau un package, l'ancien sera désinstallé.
Un moyen pratique de le faire consiste à utiliser cette pip-upgrader qui met également à jour les versions dans votre
requirements.txt
fichier pour les packages choisis (ou tous les packages).Installation
Usage
Activez votre virtualenv (important, car il installera également les nouvelles versions des packages mis à niveau dans virtualenv actuel).
cd
dans le répertoire de votre projet, puis exécutez:Utilisation avancée
Si les exigences sont placées dans un emplacement non standard, envoyez-les comme arguments:
Si vous savez déjà quel package vous souhaitez mettre à niveau, envoyez-les simplement comme arguments:
Si vous devez mettre à niveau vers la version pré-version / post-version, ajoutez un
--prerelease
argument à votre commande.Divulgation complète: j'ai écrit ce paquet. J'espère que cela aide.
la source
pip-upgrade -p all
mettra à niveau tous vos packages et mettra à jour le fichier des exigences sans avoir besoin de votre part.Si vous souhaitez uniquement mettre à niveau un package spécifique appelé
somepackage
, la commande que vous devez utiliser dans les versions récentes de pip estCeci est très utile lorsque vous avez développé une application dans django qui ne fonctionne actuellement qu'avec une version spécifique de django (disons Django = 1.9.x) et que vous souhaitez mettre à niveau un package dépendant avec une correction de bogue / nouvelle fonctionnalité et que le package mis à niveau dépend sur django (mais fonctionne avec disons n'importe quelle version de django après 1.5). Le comportement par défaut de
pip install --upgrade django-some-package
serait de mettre à niveau django vers la dernière version disponible qui pourrait autrement casser votre application, bien qu'avec les--upgrade-strategy only-if-needed
packages dépendants, la mise à niveau ne sera désormais que nécessaire.la source
Normalement, pip nettoiera après lui-même et supprimera le contenu du répertoire de construction. La seule fois où il ne le fait pas, c'est:
--no-install
optionDans tous les autres cas, vous ne devriez pas avoir de
build
répertoire qui obstrue votre environnement.la source
La définition d'une version spécifique à mettre à niveau m'a aidé au lieu de la seule commande de mise à niveau.
la source
qui a résolu pour moi le problème "pip install -I --upgrade psutil --force" après, désinstallez simplement psutil avec la nouvelle version et hop vous pouvez installer soudainement l'ancienne version (:
la source
J'utilise ceci:
la source