web-dev-qa-db-fra.com

Mettez à niveau les packages python à partir de Requirements.txt à l'aide de la commande pip

Comment mettre à niveau tous mes packages python à partir du fichier Requirements.txt à l'aide de la commande pip?

essayé avec la commande ci-dessous

$ pip install --upgrade -r requirements.txt

Depuis, les packages python sont suffixés du numéro de version (Django==1.5.1), ils ne semblent pas se mettre à niveau. Existe-t-il une meilleure approche que la modification manuelle du fichier Requirements.txt?

MODIFIER

Comme Andy l'a mentionné dans sa réponse, les packages sont épinglés dans une version spécifique. Il n'est donc pas possible de mettre à niveau des packages via la commande pip.

Mais nous pouvons y parvenir avec pip-tools en utilisant la commande suivante.

$ pip-review --auto

cela mettra automatiquement à jour tous les paquets à partir de requirements.txt (assurez-vous d'installer pip-tools à l'aide de la commande pip install).

64
abhiomkar

Non. Votre fichier d’exigences a été épinglé à des versions spécifiques. Si vos exigences sont définies sur cette version, vous ne devriez pas essayer de mettre à niveau au-delà de ces versions. Si vous devez} mettre à niveau, vous devez passer aux versions non corrigées de votre fichier de configuration.

Exemple:

lxml>=2.2.0

Cela permettrait de mettre à niveau lxml vers une version plus récente que la version 2.2.0.

lxml>=2.2.0,<2.3.0

Cela permettrait de mettre à niveau lxml vers la version la plus récente comprise entre 2.2.0 et 2.3.0.

28
Andy

tu peux essayer:

pip install --upgrade --force-reinstall -r requirements.txt

Vous pouvez également ignorer le paquet installé et installer le nouveau:

pip install -I, --ignore-installed -r requirements.txt
46
Freelancer

_ {J'ai déjà répondu à cette question ici . Voici ma solution:} _

Puisqu'il n'y avait pas de moyen facile de mettre à jour paquet par paquet et de mettre à jour le fichier requirements.txt, j'ai écrit ceci pip-upgrader qui met également à jour les versions de votre fichier requirements.txt pour les paquets choisi (ou tous les forfaits).

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.

42
Simion Agavriloaei

Comme je ne pouvais pas utiliser bash, j'ai écrit un module python pour créer un nouveau fichier de configuration sans version et l'utiliser:

data = open('requirements-prod.pip', 'r')
data2 = open('requirements-prod-no-version.pip', 'w')
for line in data.readlines():
    new_line = line[:line.index('==')]
    data2.write(new_line + '\n')
data2.flush()

Puis installez les bibliothèques à partir du nouveau fichier pip install -U -r requirements-prod-no-version.pip

Enfin, geler les versions dans le fichier d'origine pip freeze > requirements-prod.pip

2
Montaro