Invite de confirmation de contournement pour la désinstallation de pip

J’essaye de désinstaller tous les paquets de django dans mon environnement de superutilisateur pour m’assurer que toutes mes dépendances de webapp sont installées sur ma virtualenv.

sudo su sudo pip freeze | grep -E '^django-' | xargs pip -q uninstall 

Mais Pip veut confirmer chaque désinstallation de paquet, et il ne semble pas y avoir d’option -y pour pip. Existe-t-il un meilleur moyen de désinstaller un lot de modules Python? Est-ce que rm -rf .../site-packages/ une bonne façon de faire? Existe-t-il une alternative à easy_install?

Autrement, serait-il préférable de forcer pip à installer toutes les dépendances sur virtualenv plutôt que de compter sur les modules python du système pour répondre à ces dépendances, par exemple pip --upgrade install , mais obligeant même les anciennes versions à remplacer tous les modules système . J’ai essayé d’activer mon virtualenv et ensuite pip install --upgrade -r requirements.txt et cela semble installer les dépendances, même celles qui existent dans mon chemin système, mais je ne peux pas en être sûr parce que mes modules système étaient anciens. Et man pip ne semble pas garantir ce comportement (c’est-à-dire installer la même version d’un package qui existe déjà dans les packages de site du système).

en commençant par la version 7.1.2 de pip, vous pouvez lancer pip uninstall -y

Pip n’inclut PAS l’option –yes (à partir de la version pip 1.3.1).

WORKAROUND: pipe oui à ça!

 $ sudo ls # enter pw so not prompted again $ /usr/bin/yes | sudo pip uninstall pymongo 

Sinon, serait-il préférable de forcer pip à installer toutes les dépendances sur virtualenv plutôt que de compter sur les modules python du système pour répondre à ces dépendances,

Oui. Ne gâchez pas trop les paquets intégrés au système. Beaucoup de paquets système, en particulier sous OS X (même les variétés debian et les dérivés) dépendent trop d’eux.

pip –upgrade install, mais oblige même à installer d’anciennes versions pour remplacer les modules du système.

Cela ne devrait pas être un gros problème si quelques paquets supplémentaires sont déjà installés dans le paquet venv dans le paquetage système, particulièrement s’ils sont de version différente. C’est tout l’intérêt de virtualenv.

J’ai essayé d’activer mon virtualenv et ensuite installer pip –upgrade -r requirements.txt et cela semble installer les dépendances, même celles qui existent dans mon chemin système, mais je ne peux pas en être sûr parce que mes modules système étaient anciens. Et man pip ne semble pas garantir ce comportement (c’est-à-dire installer la même version d’un package qui existe déjà dans les packages de site du système).

Non, il n’installe pas les paquets déjà présents dans l’installation principale à moins que vous n’ayez utilisé l’indicateur --no-site-packages pour le créer ou que les versions requirejses et présentes soient différentes.

Lakshman Prasad avait raison, pip --upgrade et / ou virtualenv --no-site-packages est la voie à suivre. La désinstallation des modules Python à l’échelle du système est mauvaise.

L’option --upgrade de pip installe les modules requirejs dans l’env virtuel, même s’ils existent déjà dans l’environnement système, et même si la version requirejse ou la dernière version disponible est identique à la version du système.

 pip --upgrade install 

De plus, l’utilisation de l’option –no-site-packages lors de la création de l’environnement virtuel garantit que les dépendances manquantes ne peuvent pas être masquées par la présence de modules manquants dans le chemin d’access du système. Cela aide à exposer les problèmes lors de la migration d’un module d’un paquet à un autre, par exemple pinax.apps.groups -> django-groups, en particulier lorsque le problème concerne les instructions load templatetags dans django qui recherchent tous les modules disponibles pour les répertoires templatetags. dans.

 pip install -U xxxx 

peut contourner confirmer