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).
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.
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
_ {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.
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