2014-01-24 47 views

回答

11

對於已經安裝的使用pip的python API的軟件包,這是可能的。有pip.get_installed_distributions函數,它可以給你一個當前安裝的所有第三方包列表。

# rev_deps.py 
import pip 
import sys 

def find_reverse_deps(package_name): 
    return [ 
     pkg.project_name for pkg in pip.get_installed_distributions() 
     if package_name in {req.project_name for req in pkg.requires()} 
    ] 

if __name__ == '__main__': 
    print find_reverse_deps(sys.argv[1]) 

該腳本將輸出包的列表,這需要指定一個:

$python rev_deps.py requests 
16

我發現亞歷山大的回答完美,但它很難複製/粘貼。這裏也是一樣,準備粘貼:

import pip 
def rdeps(package_name): 
    return [pkg.project_name 
      for pkg in pip.get_installed_distributions() 
      if package_name in [requirement.project_name 
           for requirement in pkg.requires()]] 

rdeps('some-package-name') 
+0

感謝您對重構 – guettli

+0

爲了記錄在案,PIP沒有一個公開的API。這個回答將會是無效的。使用setuptools中的'pkg_resources'來代替。 –