J'essaie de réparer l'un de mes virtualenvs - j'aimerais réinitialiser toutes les bibliothèques installées pour qu'elles correspondent à celles de la production.
Existe-t-il un moyen rapide et facile de faire cela avec pip ?
J'essaie de réparer l'un de mes virtualenvs - j'aimerais réinitialiser toutes les bibliothèques installées pour qu'elles correspondent à celles de la production.
Existe-t-il un moyen rapide et facile de faire cela avec pip ?
J'ai trouvé ce snippet comme solution alternative. C'est une suppression plus gracieuse des bibliothèques que de refaire le virtualenv :
pip freeze | xargs pip uninstall -y
Si vous avez des paquets installés via VCS, vous devez exclure ces lignes et supprimer les paquets manuellement (élevés à partir des commentaires ci-dessous) :
pip freeze | grep -v "^-e" | xargs pip uninstall -y
Je trouve que c'est une bonne solution, purement parce qu'elle ne supprime pas entièrement l'environnement virtuel - j'ai peut-être apporté des modifications à par ex. postactivate
qui restera.
Après avoir exécuté cette opération, j'ai réalisé qu'elle supprimait le setuptools
paquet. J'ai résolu le problème en suivant les instructions ici : stackoverflow.com/questions/7446187/
@gerty3000 oui, cela va (comme le demande la question) supprimer tous les paquets installés dans un virtual-env. dans votre environnement, peut-être que setuptools serait mieux installé à un emplacement global à la place ?
Cela fonctionnera pour tous les systèmes Mac, Windows et Linux. Pour obtenir la liste de tous les paquets pip dans le fichier requirements.txt (Note : Cette commande écrasera le fichier requirements.txt s'il existe, sinon elle en créera un nouveau, et si vous ne voulez pas remplacer l'ancien fichier requirements.txt, donnez un nom de fichier différent dans la commande all following à la place du fichier requirements.txt).
pip freeze > requirements.txt
Maintenant, pour enlever un par un
pip uninstall -r requirements.txt
Si nous voulons tout supprimer en même temps, alors
pip uninstall -r requirements.txt -y
Si vous travaillez sur un projet existant qui a une requirements.txt
et que votre environnement a divergé, remplacez simplement requirements.txt
des exemples ci-dessus avec toberemoved.txt
. Ensuite, une fois que vous avez suivi les étapes ci-dessus, vous pouvez utiliser la fonction requirements.txt
pour mettre à jour votre environnement maintenant propre.
Et pour une seule commande sans créer de fichier (comme @joeb l'a suggéré).
pip uninstall -y -r <(pip freeze)
Cela fonctionne avec la dernière version. Je pense que c'est la façon la plus courte et la plus déclarative de le faire.
virtualenv --clear MYENV
Mais pourquoi ne pas simplement supprimer et recréer le virtualenv ?
Les règles d'immuabilité. De plus, il est difficile de se souvenir de tous ces pipes et greps que les autres solutions utilisent.
Est-ce que c'est effectivement la même chose que d'exécuter wipeenv
? virtualenvwrapper.readthedocs.org/en/latest/
En fait - il semble (d'après ce que je viens de voir) que wipeenv
alors qu'il se trouve dans l'environnement jette une erreur et ne supprime rien s'il est utilisé dans le contexte d'un fichier pip install -e
de développement, en essayant d'utiliser virtualenv --clear MYENV
ne génère pas d'erreur et ne supprime aucun des paquets que vous avez pu installer précédemment dans l'environnement. C'est du moins le cas sous OSX. Voir bitbucket.org/dhellmann/virtualenvwrapper/issues/211/ pour plus d'informations.
Je voulais élever cette réponse hors de la section des commentaires parce que c'est l'une des solutions les plus élégantes du fil de discussion. Tout le mérite de cette réponse revient à @joeb .
pip uninstall -y -r <(pip freeze)
Cela a bien fonctionné pour moi dans le cas où je voulais vider le dossier des paquets de l'utilisateur en dehors du contexte d'un virtualenv, ce que beaucoup des réponses ci-dessus ne gèrent pas.
Edit : Quelqu'un sait comment faire fonctionner cette commande dans un Makefile ?
Je l'ajoute à mon profil bash pour plus de commodité :
alias pipuninstallall="pip uninstall -y -r <(pip freeze)"
Alors cours :
pipuninstallall
Si vous utilisez pipenv tu peux juste courir :
pipenv uninstall --all
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
31 votes
@patelshahrukh désinstallation de python N'EST PAS supprimer les paquets pip. svp ÉVITER en faisant ça, car il est probable que les deux NE FONCTIONNE PAS de la façon dont vous le pensez, et selon la façon dont vous installez à nouveau python, peut laisser votre machine dans un état instable qui est plus de travail à réparer .
0 votes
Cela pourrait être utile pour les paquets installés en mode développement ou en mode modifiable : stackoverflow.com/questions/17346619/