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 portent le suffixe du numéro de version ( Django==1.5.1
) qu'ils ne semblent pas mettre à niveau. Existe-t-il une meilleure approche que la modification manuelle du fichier requirements.txt?
ÉDITER
Comme Andy l'a mentionné dans ses réponses, les packages sont épinglés à une version spécifique, il n'est donc pas possible de mettre à niveau les packages via la commande pip.
Mais nous pouvons y parvenir en pip-tools
utilisant la commande suivante.
$ pip-review --auto
cela mettra automatiquement à jour tous les packages de requirements.txt (assurez-vous d'installer à l' pip-tools
aide de la commande pip install).
la source
pip-compile -U requirements.txt
.Réponses:
Non. Votre fichier d'exigences a été épinglé à des versions spécifiques. Si vos exigences sont définies sur cette version, vous ne devez pas essayer de mettre à niveau au-delà de ces versions. Si vous devez effectuer une mise à niveau, vous devez passer aux versions non épinglées dans votre fichier d'exigences.
Exemple:
Cela mettrait à niveau lxml vers n'importe quelle version plus récente que 2.2.0
Cela mettrait à jour lxml vers la version la plus récente entre 2.2.0 et 2.3.0.
la source
sed 's/==/>=/g' requirements.txt > TMP_FILE && mv TMP_FILE requirements.txt
remplacera tout==
par>=
tu peux essayer:
Vous pouvez également ignorer le package installé et installer le nouveau:
la source
-I
et--ignore-installed
sont les mêmes drapeaux et de plats ce n'est pas valable d'avoir un,
là - dedans. De cette façon, aucune rétrogradation ne se produira pendant l'installation et une fois l'installation des exigences terminée, vous pouvez mettre à niveau les packages installés à l'aide depip-review --auto
.J'ai déjà répondu à cette question ici . Voici ma solution:
Comme il n'y avait pas de moyen facile de mettre à niveau un package par package et de mettre à jour le fichier requirements.txt, j'ai écrit ce pip-upgrader qui met également à jour les versions de 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 votre répertoire de projet, puis exécutez:Utilisation avancée
Si les exigences sont placées dans un emplacement non standard, envoyez-les en tant qu'arguments:
Si vous savez déjà quel package vous souhaitez mettre à niveau, envoyez-les simplement en tant qu'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.
la source
Je suggère de geler toutes vos dépendances afin d'avoir des builds prévisibles .
En faisant cela, vous pouvez mettre à jour toutes les dépendances à la fois comme ceci:
Après avoir fait ce qui précède, testez votre projet avec le nouvel ensemble de packages et validez éventuellement le
requirements.txt
fichier dans le référentiel.la source
J'ai juste dû faire la même chose ... j'ai utilisé ce petit monoplace pour faire le travail:
lequel:
packages=$(cat requirements.txt | sed 's/==.*//g')
crée une liste des noms de packages actuels dans requirements.txt (en supprimant la version).echo $packages | xargs pip3 install -U
passe ensuite tous les packages comme arguments à pip3 pour la mise à niveau.freeze=$(pip3 freeze);
Obtient toutes les versions actuelles du package au format requis pour requirements.txtfor p in $(echo $packages)
puis parcourt les noms des packagesecho $freeze | grep -E "^${p}==" >> requirements.new
obtient la ligne de version du package à partir de la sortie pip freeze qui correspond au package et écrit dans new requirements.txtCela présente l'avantage supplémentaire de préserver l'ordre du fichier requirements.txt d'origine. :)
J'espère que cela t'aides!
la source
Comme je ne pouvais pas faire cela avec bash, j'ai écrit un module python pour créer un nouveau fichier d'exigences sans version et l'utiliser:
Ensuite, installez les bibliothèques à partir du nouveau fichier
pip install -U -r requirements-prod-no-version.pip
Enfin, figer les versions dans le fichier d'origine
pip freeze > requirements-prod.pip
la source
Une autre solution consiste à utiliser le package upgrade-requirements
Et puis exécutez:
Il mettra à niveau tous les packages qui ne sont pas à leur dernière version, et créera également un requirements.txt mis à jour à la fin.
la source
1) Pour mettre à jour les fichiers installés pip depuis reqs.txt, ajoutez le > = en remplacement de == cela indiquera à pip d'installer la lib supérieure ou égale à la version que vous demandez, ici en installant la version la plus récente de la bibliothèque demandée
1.a) ** Ma réponse pour le fil ** En ajoutant
py -m pip install -r
reqs.txt à un redémarrage quotidien ... ou quelque chose de ce genre, vous pouvez mettre à jour vos bibliothèques installées. Résumé par Andy parfaitement-Ma raison pour entrer dans ce fil était de trouver des informations sur la façon de mettre à jour le pip de base d'environnement virtuel (généralement 10.0.03 pour moi ??)
dans l'espoir de satisfaire un problème dont j'ai pu trouver l'une des deux solutions
Grâce à Andy, j'ai satisfait le besoin B
En ajoutant pip > = version demandée dans reqs.txt
lors de l'instanciation d'un nouvel environnement virtuel || ré-instanciation du Venv précédent
py -m venv devenv
pour configurer un nouvel environnement de développement
evenv\scripts\activate.bat
pour activer dev env
python -m pip install -r requirenments.txt
pour installer les bibliothèques de base
sortie yeilds
Désolé pour le Brain Dump, j'espère que cela aide quelqu'un :)
🤳 Austin 👨🎤🚀🥊
la source
La deuxième réponse est la plus utile mais ce que je voulais faire, c'est verrouiller certains paquets tout en en ayant d'autres à la dernière version (par exemple youtube-dl).
Un exemple
requirements.txt
ressemblerait à ceci (~ signifie compatible):Puis dans le terminal, utilisez la commande
pip install --upgrade -r requirements.txt
Cela garantit que Pillow restera à 6.2.2, les demandes seront mises à niveau vers la dernière version 2.22.x (si disponible) et la dernière version de youtube-dl sera installée si ce n'est déjà fait.
la source
Je suppose que la solution la plus simple consiste à créer le requirements.txt avec:
la source
Si vous installez quelque chose dans votre projet django et après l'installation, vous souhaitez mettre à jour votre fichier d'exigences, cette commande peut mettre à jour votre fichier exigence.txt pip freeze> requirements.txt
si votre fichier d'exigences n'existe pas dans votre projet, vous pouvez utiliser cette commande pour créer un nouveau fichier requis.txt pip freeze> requirements.txt
la source
J'édite le requirements.txt comme ci-dessous et lance $ sh ./requirements.txt
la source