def search_packages_info(query): """ Gather details from installed distributions. Print distribution name, version, location, and installed files. Installed files requires a pip generated 'installed-files.txt' in the distributions '.egg-info' directory. """ installed_packages = dict( [(p.project_name.lower(), p) for p in pkg_resources.working_set]) for name in query: normalized_name = name.lower() if normalized_name in installed_packages: dist = installed_packages[normalized_name] try: metadata = dist.get_metadata('METADATA') except: try: metadata = list(dist._get_metadata('PKG-INFO')) except: metadata = None package = { 'name': dist.project_name, 'version': dist.version, 'requires': [(dep.project_name, dep.specs) for dep in dist.requires()], 'metadata' : metadata, } fileinfo.save_data(name, package)
def get_package_data(name): client = xmlrpclib.ServerProxy('http://pypi.python.org/pypi') releases = client.package_releases(name) if not releases: return release = releases[0] package = { 'name': name, 'version': release, } more_package_data = get_metadata(client, name, release) if more_package_data: package.update(more_package_data) fileinfo.save_data(name, package, fileinfo.PYPI_DATA_DIR)