at master 908 B view raw
1import pkg_resources 2import collections 3import sys 4 5do_abort = False 6packages = collections.defaultdict(list) 7 8for f in sys.path: 9 for req in pkg_resources.find_distributions(f): 10 if req not in packages[req.project_name]: 11 # some exceptions inside buildPythonPackage 12 if req.project_name in ['setuptools', 'pip', 'wheel']: 13 continue 14 packages[req.project_name].append(req) 15 16 17for name, duplicates in packages.items(): 18 if len(duplicates) > 1: 19 do_abort = True 20 print("Found duplicated packages in closure for dependency '{}': ".format(name)) 21 for dup in duplicates: 22 print(" " + repr(dup)) 23 24if do_abort: 25 print("") 26 print( 27 'Package duplicates found in closure, see above. Usually this ' 28 'happens if two packages depend on different version ' 29 'of the same dependency.') 30 sys.exit(1)