2017-08-21 1 views
6

Ich versuche, eine Liste von Paketen mit Pip zu installieren.Installieren von Paketen aus einer Liste mit Pip

Der Code, den ich verwendet wird:

import pip 

def install(package_name): 
     try: 
      pip.main(['install', package_name]) 
     except: 
      print("Unable to install " + package_name) 

Dieser Code funktioniert gut, und wenn ein Paket nicht verfügbar ist, gibt es eine Fehlermeldung:

No matching distributions found

Aber was ich zu tun versuchen, Wenn eine Installation fehlschlägt (zB: ungültiger Paketname), möchte ich das Paket drucken, das fehlgeschlagen ist.

Was kann dafür getan werden?

Jede Hilfe wäre dankbar, danke.

+0

https://github.com/pypa/pip/blob/21be153044a7aa245e12ce3f86793e9b17201519/pip/index.py#L525 – Juggernaut

Antwort

5

Versuchen Sie, den Rückgabewert für Nicht-Null zu überprüfen, was darauf hinweist, dass bei der Installation ein Fehler aufgetreten ist. Nicht alle Fehler lösen Ausnahmen aus.

2

Sie können den Wert des Pakets überprüfen, um zu überprüfen, ob keine übereinstimmende Verteilung gefunden wurde. Normalerweise wird das Paket 0 zurückgeben, wenn eine Installation Kandidat vorhanden ist, sonst 1 für keinen Kandidaten gefunden So

import pip 

def install(package_name): 
    package = pip.main(['install', package_name])  
    result = "Package successfully installed: " if package == 0 else "Unable to find package: " 
    print(result + package_name) 

zurück, wenn Sie versuchen, etwas zu tun:

>>> install("Virtualenvs") 

Wir kommen wieder:

Da gibt es kein gültiges Paket für "Birtualenvs". Aber mit einem gültigen Paket:

>>> install("virtualenv") 

Wir kommen wieder:

Requirement already satisfied: virtualenv in/usr/lib/python2.7/dist-packages 
Package successfully installed: virtualenv 
+0

Die 'TRY außer '' else' 'Block wird ausgeführt, wenn keine Ausnahme vorliegt. In diesem Fall gibt es keine Ausnahme, da der Fehlercode von der 'pip.main()' Methode zurückgegeben wird. In diesem Fall müssen Sie im Rückgabewert nach einem Fehlercode suchen, da andernfalls die Meldung "Kann nicht installiert werden" für eine erfolgreiche Installation ausgegeben wird. – tdube

+0

Sie haben Recht, auch wenn ich ein gültiges Paket gesetzt habe, gab es den Messenger für kein gültiges Paket gefunden –

Verwandte Themen