2010-09-28 17 views
3

Lors de l'exécution de pépin avec un fichier requirements.txt qui a des versions fixes, nous obtenons l'erreur suivante (ou similaire):En utilisant Pip, comment forcer la mise à niveau uniquement des paquets non mis à jour?

VersionConflict: (solrpy 0.9.1 
(.../lib/python2.6/site-packages/solrpy-0.9.1-py2.6.egg), 
    Requirement.parse('solrpy==0.9.3')) 

parce que les conflits de version. L'utilisation de pip install -U -r requirements.txt corrige cela, mais cela nous oblige également à télécharger tous les paquets à nouveau. L'une des bonnes choses à propos de Pip est qu'il va savoir ce qui est installé et ne pas re-télécharger/installer.

Y a-t-il un moyen de contourner ce problème? Je suppose que ce que je veux, c'est une "mise à jour logicielle", où elle ne fait que mettre à jour les paquets s'ils sont en conflit.

+0

Oui, -U actuellement re-télécharge tous les paquets installés. C'est un bug et devrait être réparé. Dans une note non liée, si vous voyez cette erreur VersionConflict, cela indique que vous exécutez une version de pip datant d'au moins six mois. C'est ancien en termes de pip; Je recommande fortement de ne pas utiliser les paquets OS pour pip, mais d'obtenir la version la plus récente directement de PyPI. –

+0

Merci Carl, c'est utile. Cela vaut-il la peine d'ajouter un +1 au rapport de bug mentionné ci-dessous? –

Répondre

-1

Mettre à niveau le package solrpy séparément:

pip install -U --no-deps solrpy 

Je pense que vous pouvez probablement omettre le paramètre --no-deps, mais vous pourriez vouloir essayer cette première, et l'ancien second, si vous avez des problèmes:

pip install -U solrpy 

Je ne crois pas qu'il existe un moyen de simplement mettre à jour supérieur empaqueté versionné déjà installé à partir d'un fichier requirements.txt.