J’améliore tout le temps mon fichier de démarrage de Python.
Aujourd’hui je lui ai rajouté une petite fonction pour installer des packages avec pip depuis le shell. En effet, souvent il m’arrive de le lancer, puis d’importer un truc qui n’est pas là. Alors il faut sortir, installer, revenir.
Chiant.
Du coup :
import pip def pip_install(*packages): """ Install packages diretly in the shell """ for name in packages: cmd = ['install', name] if not hasattr(sys, 'real_prefix'): # Si pas dans un virtual env, install juste # dans le dossier utilisateur cmd.append('--user') pip.main(cmd) |
Et dans le shell :
>>> pip_install('arrow', 'requests', 'minibelt') >>> import arrow |
Sinon il y a aussi le module
pip
de disponible :Bien vu.
Le problème avec cette solution est qu’elle ne marchera pas si vous avez besoin de sudo pour installer le module (sudo pip install)
Cette solution fait très attention à installer les packages avec –user pour ne pas avoir à utiliser sudo. Utiliser sudo avec pip est généralement une mauvaise idée. Il n’y a que quelques exceptions, et pour celles-ci mieux vaut ne pas être dans le shell quand on se lance.
Oh joli ça !
Moi je passe toujours “sur le côté” en ouvrant un autre onglet terminal, je pip install, puis retour au shell python et import.
Mais la, c’est plus efficace :)
C’est une chouette astuce, mais attention
pip.main
n’a pas été prévu pour ça et comporte un petit bug : il va définir des loggers “root”, et vous nous pourrez plus utiliserlogging.basicConfig
après ça : https://github.com/pypa/pip/issues/3043