Exécuter pip en python idle
Je suis curieux à propos de l'exécution du programme pep.
Chaque fois que j'ai couru pip dans l'interface de commande dans windows comme ça
c:\python27\script>pip install numpy
Mais, je me demandais si je peux le faire tourner en python idle.
import pip
pip.install("numpy")
Malheureusement, il ne fonctionne pas.
- Essayez
pip.main(["install", "--user", "somepackagenamehere"])
par exemple.
Vous devez vous connecter pour publier un commentaire.
Cette question est, ou devrait être, sur l'exécution du pip à partir d'un programme en python. La veille est pas directement pertinente pour la présente version de la quesiton.
À développer J. J. Hakala commentaire: une ligne de commande comme
pip install pillow
est divisée sur les espaces de devenirsys.argv
. Lorsque pip est exécuté comme un module principal, il appellepip.main(sys.argv[1:])
. Si on importe pip, on peut appelerpip.main(arg_line.split())
, oùarg_line
est la partie de la ligne de commande aprèspip
.En septembre dernier (2015) j'ai expérimenté avec l'utilisation de ce involontaires de l'API à partir d'un autre programme en python et rapporté les premiers résultats sur tracker question Vingt trois mille cinq cent cinquante et un. Poursuite des débats et des résultats de suivi.
Le problème avec l'exécution de plusieurs commandes en un seul processus, c'est que certains pip commandes cache non seulement sys.en chemin, qui normalement reste constante, mais aussi la liste des paquets installés, ce qui change normalement. Depuis le pip est un programme conçu pour exécuter une commande par le processus, puis à la sortie, il ne met à jour le cache. Lorsque pip.principal est utilisé pour exécuter plusieurs commandes en un seul processus, les commandes effectuées après la mise en cache peut utiliser un obsolètes et ne sont plus correctes cache. Par exemple,
list
aprèsinstall
montre comment les choses ont été avant de l'installer.Un deuxième problème pour un programme qui veut examiner la sortie de pep, c'est qu'il va à stdout et stderr. J'ai posté un programme qui rend compte de ces flux dans des variables de programme dans le cadre de l'exécution du pip.
À l'aide d'un sous-processus d'appel pour chaque pip commande, comme suggéré par L_Pav, bien que moins efficace, résout ces deux problèmes. Le
communicate
méthode rend le flux de sortie disponibles. Voir le sous-processus doc.À l'heure actuelle, il n'y a aucune façon de le faire, vous pouvez utiliser le pip.principal, mais vous courant d'inactivité de session ne sera pas "voir" ce paquet installé.
Il y a eu beaucoup de discussion sur comment ajouter un "niveau élevé" programmatique de l'API pour le pep, il semble prometteur.
'C:\\Users\\Terry\\AppData\\Roaming\\Python\\Python35\\site-packages',
Vérifier que, lorsque pip se met les fichiers avec l'utilisateur correspond à ce qui est sur sys.chemin d'accès.En fait, je pense que vous pouvez utiliser
subprocess.Popen(apt-get numpy)
, vous ne savez pas comment le faire avec le PIP bien."apt-get numpy"
, ou de passer d'une liste de chaînes de caractères, tels que ['pip', 'installer', 'numpy']. Pour une raison que dans ma réponse, à l'aide de sous-processus est actuellement le moyen le plus facile pour exécuter pip à partir de l'intérieur d'un programme en python.Si votre sur un Mac, vous devriez être en mesure de le faire comme ceci:
J'espère que cela vous aide.