2017-08-21 14 views
6

pipを使ってパッケージのリストをインストールしようとしています。pipを使ってリストからパッケージをインストールする

私が使用したコードは次のとおりです。

import pip 

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

このコードは正常に動作し、パッケージが使用できない場合、それはエラーを与える:しかし

No matching distributions found

、私がやろうとしていますどのようなインストールが失敗した場合(例えば、無効なパッケージ名など)、失敗したパッケージを印刷したい。

何ができるのですか?

ご協力いただきありがとうございます、ありがとうございます。

+0

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

答えて

5

戻り値がゼロでないことを確認してください。これは、インストールでエラーが発生したことを示しています。すべてのエラーが例外をトリガするわけではありません。

import pip 

def install(package_name): 
     try: 
      pipcode = pip.main(['install', package_name]) 
      if pipcode != 0: 
       print("Unable to install " + package_name + " ; pipcode %d" % pipcode) 
     except: 
      print("Unable to install " + package_name) 
2

パッケージの値を確認して、一致するディストリビューションが見つからなかったかどうかを確認できます。

>>> install("Virtualenvs") 

が返されます:

あなたはこのような何かをしようとした場合、インストール候補が存在する場合、通常パッケージはそういない候補者に1を返し、0を返しますので、

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) 

を見つけました

"Birtualenvs"には有効なパッケージがないため、しかし、有効なパッケージで:

>>> install("virtualenv") 

が返されます:

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

'try- 'else'ブロックは例外がなければ実行されます。この場合、例外はありません。エラーコードは 'pip.main()'メソッドによって返されるからです。この場合、戻り値のエラーコードを確認する必要があります。そうしないと、正常にインストールするために「インストールできません」というメッセージが表示されるためです。 – tdube

+0

正しいパッケージを設定しても、有効なパッケージが見つからなかった場合にメッセンジャーが返されています –

関連する問題