Can pip (or setuptools, distribute etc...) list the license used by each installed package?
Question: 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 packages should already contain the license name and version in
their metadata.

Unfortunately I can't find any options in pip or easy_install to list more
than the package name and installed version (via pip freeze).

Does anyone have pointers to a tool to list license metadata for Python
packages?


Answer: You can use `pkg_resources`:

    
    
    import pkg_resources
    
    def get_pkg_license(pkgname):
        """
        Given a package reference (as from requirements.txt),
        return license listed in package metadata.
        NOTE: This function does no error checking and is for
        demonstration purposes only.
        """
        pkgs = pkg_resources.require(pkgname)
        pkg = pkgs[0]
        for line in pkg.get_metadata_lines('PKG-INFO'):
            (k, v) = line.split(': ', 1)
            if k == "License":
                return v
        return None
    

Example use:

    
    
    >>> get_pkg_license('mercurial')
    'GNU GPLv2+'
    >>> get_pkg_license('pytz')
    'MIT'
    >>> get_pkg_license('django')
    'UNKNOWN'
    

