def list_packages(prefix, installed, regex=None, format='human', show_channel_urls=context.show_channel_urls): res = 0 result = [] for dist in get_packages(installed, regex): if format == 'canonical': result.append(dist) continue if format == 'export': result.append('='.join(dist.quad[:3])) continue try: # Returns None if no meta-file found (e.g. pip install) info = is_linked(prefix, dist) features = set(info.get('features', '').split()) disp = '%(name)-25s %(version)-15s %(build)15s' % info disp += ' %s' % disp_features(features) schannel = info.get('schannel') if show_channel_urls or show_channel_urls is None and schannel != DEFAULTS: disp += ' %s' % schannel result.append(disp) except (AttributeError, IOError, KeyError, ValueError) as e: log.debug("exception for dist %s:\n%r", dist, e) result.append('%-25s %-15s %15s' % tuple(dist.quad[:3])) return res, result
def which_package(path): """ given the path (of a (presumably) conda installed file) iterate over the conda packages the file came from. Usually the iteration yields only one package. """ path = abspath(path) prefix = which_prefix(path) if prefix is None: raise RuntimeError("could not determine conda prefix from: %s" % path) for dist in linked(prefix): meta = is_linked(prefix, dist) if any(abspath(join(prefix, f)) == path for f in meta['files']): yield dist