Can pip (or setuptools, distribute etc…) list the license used by each installed package?

前端 未结 11 1214
梦如初夏
梦如初夏 2020-12-13 09:31

I\'m trying to audit a Python project with a large number of dependencies and while I can manually look up each project\'s homepage/license terms, it seems like most OSS pac

11条回答
  •  [愿得一人]
    2020-12-13 10:01

    A slightly better version for those running jupyter - uses Anaconda defaults - no install needed

    import pkg_resources
    import pandas as pd
    
    def get_pkg_license(pkg):
        try:
            lines = pkg.get_metadata_lines('METADATA')
        except:
            lines = pkg.get_metadata_lines('PKG-INFO')
    
        for line in lines:
            if line.startswith('License:'):
                return line[9:]
        return '(Licence not found)'
    
    def print_packages_and_licenses():
        table = []
        for pkg in sorted(pkg_resources.working_set, key=lambda x: str(x).lower()):
            table.append([str(pkg).split(' ',1)[0], str(pkg).split(' ',1)[1], get_pkg_license(pkg)])
        df = pd.DataFrame(table, columns=['Package',  'Version', 'License'])
        return df
    
    print_packages_and_licenses()   
    

提交回复
热议问题