def execute(args, parser): if not args.subcommand: parser.print_help() with Locked(config.croot): if args.subcommand == 'linkages': if not sys.platform.startswith('linux'): sys.exit("Error: conda inspect linkages is only implemented in Linux") prefix = get_prefix(args) installed = ci.linked(prefix) for pkg in args.packages: for dist in installed: if pkg == dist.rsplit('-', 2)[0]: break else: sys.exit("Package %s is not installed in %s" % (pkg, prefix)) linkages = get_package_linkages(dist, prefix) depmap = defaultdict(list) for binary in linkages: for lib, path in linkages[binary]: path = abspath(path) if path not in {'', 'not found'} else path if path.startswith(prefix): deps = list(which_package(path)) if len(deps) > 1: print("Warning: %s comes from multiple packages: %s" % (path, ' and '.join(deps)), file=sys.stderr) for d in deps: depmap[d].append((lib, path.split(prefix + '/', 1)[-1], binary)) elif path == 'not found': depmap['not found'].append((lib, path, binary)) else: depmap['system'].append((lib, path, binary)) print_linkages(depmap, show_files=args.show_files)
def execute(args, parser): from conda.misc import untracked, which_package from conda.packup import make_tarbz2 prefix = get_prefix(args) if args.which: for path in args.which: for dist in which_package(path): print('%-50s %s' % (path, dist)) return print('# prefix:', prefix) if args.reset: remove(prefix, untracked(prefix)) return if args.untracked: files = sorted(untracked(prefix)) print('# untracked files: %d' % len(files)) for fn in files: print(fn) return make_tarbz2(prefix, name=args.pkg_name.lower(), version=args.pkg_version, build_number=int(args.pkg_build))
def execute(args, parser): import sys from conda.misc import untracked from conda.packup import make_tarbz2, remove prefix = common.get_prefix(args) if args.which: from conda.misc import which_package for path in args.path: for dist in which_package(path): print('%-50s %s' % (path, dist)) return if args.ls_files: if list_package_files(args.ls_files) == 1: sys.exit(1) else: return if args.path: sys.exit("Error: no positional arguments expected.") print('# prefix:', prefix) if args.reset: remove(prefix, untracked(prefix)) return if args.untracked: files = sorted(untracked(prefix)) print('# untracked files: %d' % len(files)) for fn in files: print(fn) return make_tarbz2(prefix, name = args.pkg_name.lower(), version = args.pkg_version, build_number = int(args.pkg_build))
def execute(args, parser): import sys from conda.misc import untracked from conda.packup import make_tarbz2, remove prefix = common.get_prefix(args) if args.which: from conda.misc import which_package for path in args.path: for dist in which_package(path): print('%-50s %s' % (path, dist)) return if args.ls_files: if list_package_files(args.ls_files) == 1: sys.exit(1) else: return if args.path: sys.exit("Error: no positional arguments expected.") print('# prefix:', prefix) if args.reset: remove(prefix, untracked(prefix)) return if args.untracked: files = sorted(untracked(prefix)) print('# untracked files: %d' % len(files)) for fn in files: print(fn) return make_tarbz2(prefix, name=args.pkg_name.lower(), version=args.pkg_version, build_number=int(args.pkg_build))
def execute(args, parser): from conda import config from conda.api import get_package_versions, app_is_installed from conda.install import is_linked if args.args: results = defaultdict(list) for arg in args.args: if isfile(arg): from conda.misc import which_package path = arg for dist in which_package(path): if args.json: results[arg].append(dist) else: print('%-50s %s' % (path, dist)) elif arg.endswith('.tar.bz2'): info = is_linked(config.root_dir, arg[:-8]) if not info: if args.json: results[arg] = { 'installed': [] } else: print("Package %s is not installed" % arg) continue info['installed'] = app_is_installed(arg) if args.json: results[arg] = info else: print(arg) print(' %-15s %30s' % ('installed', bool(info.get('installed')))) for key in ('name', 'version', 'build', 'license', 'platform', 'arch', 'size', 'summary'): print(' %-15s %30s' % (key, info.get(key))) else: if args.json: for pkg in get_package_versions(arg): results[arg].append(pkg._asdict()) else: show_pkg_info(arg) if args.json: common.stdout_json(results) return import os from os.path import basename, dirname, isdir, join import conda import conda.config as config from conda.cli.main_init import is_initialized options = 'envs', 'system', 'license' info_dict = dict(platform=config.subdir, conda_version=conda.__version__, root_prefix=config.root_dir, root_writable=config.root_writable, pkgs_dirs=config.pkgs_dirs, envs_dirs=config.envs_dirs, default_prefix=config.default_prefix, channels=config.get_channel_urls(), rc_path=config.rc_path, is_foreign=bool(config.foreign), envs=[], python_version='.'.join(map(str, sys.version_info)), ) if args.all or args.json: for option in options: setattr(args, option, True) t_pat = re.compile(r'binstar\.org/(t/[0-9a-f\-]{4,})') info_dict['channels_disp'] = [t_pat.sub('binstar.org/t/<TOKEN>', c) for c in info_dict['channels']] if args.all or all(not getattr(args, opt) for opt in options): for key in 'pkgs_dirs', 'envs_dirs', 'channels_disp': info_dict['_' + key] = ('\n' + 24 * ' ').join(info_dict[key]) info_dict['_rtwro'] = ('writable' if info_dict['root_writable'] else 'read only') print("""\ Current conda install: platform : %(platform)s conda version : %(conda_version)s python version : %(python_version)s root environment : %(root_prefix)s (%(_rtwro)s) default environment : %(default_prefix)s envs directories : %(_envs_dirs)s package cache : %(_pkgs_dirs)s channel URLs : %(_channels_disp)s config file : %(rc_path)s is foreign system : %(is_foreign)s """ % info_dict) if not is_initialized(): print("""\ # NOTE: # root directory '%s' uninitalized, # use 'conda init' to initialize.""" % config.root_dir) del info_dict['channels_disp'] if args.envs: if not args.json: print("# conda environments:") print("#") def disp_env(prefix): fmt = '%-20s %s %s' default = '*' if prefix == config.default_prefix else ' ' name = (config.root_env_name if prefix == config.root_dir else basename(prefix)) if not args.json: print(fmt % (name, default, prefix)) for envs_dir in config.envs_dirs: if not isdir(envs_dir): continue for dn in sorted(os.listdir(envs_dir)): if dn.startswith('.'): continue prefix = join(envs_dir, dn) if isdir(prefix): prefix = join(envs_dir, dn) disp_env(prefix) info_dict['envs'].append(prefix) disp_env(config.root_dir) print() if args.system and not args.json: from conda.cli.find_commands import find_commands, find_executable print("sys.version: %s..." % (sys.version[:40])) print("sys.prefix: %s" % sys.prefix) print("sys.executable: %s" % sys.executable) print("conda location: %s" % dirname(conda.__file__)) for cmd in sorted(set(find_commands() + ['build'])): print("conda-%s: %s" % (cmd, find_executable(cmd))) print() evars = ['PATH', 'PYTHONPATH', 'PYTHONHOME', 'CONDA_DEFAULT_ENV', 'CIO_TEST', 'CONDA_ENVS_PATH'] if config.platform == 'linux': evars.append('LD_LIBRARY_PATH') elif config.platform == 'osx': evars.append('DYLD_LIBRARY_PATH') for ev in sorted(evars): print("%s: %s" % (ev, os.getenv(ev, '<not set>'))) print() if args.license and not args.json: try: from _license import show_info show_info() except ImportError: print("""\ WARNING: could import _license.show_info # try: # $ conda install -n root _license""") if args.json: common.stdout_json(info_dict)
def execute(args, parser): if not args.subcommand: parser.print_help() prefix = get_prefix(args) installed = ci.linked(prefix) if not args.packages and not args.untracked and not args.all: parser.error("At least one package or --untracked or --all must be provided") if args.all: args.packages = sorted([i.rsplit('-', 2)[0] for i in installed]) if args.untracked: args.packages.append(untracked_package) for pkg in args.packages: if pkg == untracked_package: dist = untracked_package else: for dist in installed: if pkg == dist.rsplit('-', 2)[0]: break else: sys.exit("Package %s is not installed in %s" % (pkg, prefix)) print(pkg) print('-'*len(str(pkg))) print() if args.subcommand == 'linkages': if not sys.platform.startswith(('linux', 'darwin')): sys.exit("Error: conda inspect linkages is only implemented in Linux and OS X") if dist == untracked_package: obj_files = get_untracked_obj_files(prefix) else: obj_files = get_package_obj_files(dist, prefix) linkages = get_linkages(obj_files, prefix) depmap = defaultdict(list) for binary in linkages: for lib, path in linkages[binary]: path = replace_path(binary, path, prefix) if path not in {'', 'not found'} else path if path.startswith(prefix): deps = list(which_package(path)) if len(deps) > 1: print("Warning: %s comes from multiple packages: %s" % (path, ' and '.join(deps)), file=sys.stderr) if not deps: if exists(path): depmap['untracked'].append((lib, path.split(prefix + '/', 1)[-1], binary)) else: depmap['not found'].append((lib, path.split(prefix + '/', 1)[-1], binary)) for d in deps: depmap[d].append((lib, path.split(prefix + '/', 1)[-1], binary)) elif path == 'not found': depmap['not found'].append((lib, path, binary)) else: depmap['system'].append((lib, path, binary)) print_linkages(depmap, show_files=args.show_files) if args.subcommand == 'objects': if not sys.platform.startswith('darwin'): sys.exit("Error: conda inspect objects is only implemented in OS X") if dist == untracked_package: obj_files = get_untracked_obj_files(prefix) else: obj_files = get_package_obj_files(dist, prefix) info = [] for f in obj_files: f_info = {} path = join(prefix, f) f_info['filetype'] = human_filetype(path) f_info['rpath'] = get_rpath(path) f_info['filename'] = f info.append(f_info) print_object_info(info, args.groupby)
def execute(args, parser): if not args.subcommand: parser.print_help() prefix = get_prefix(args) installed = ci.linked(prefix) if not args.packages and not args.untracked and not args.all: parser.error( "At least one package or --untracked or --all must be provided") if args.all: args.packages = sorted([i.rsplit('-', 2)[0] for i in installed]) if args.untracked: args.packages.append(untracked_package) for pkg in args.packages: if pkg == untracked_package: dist = untracked_package else: for dist in installed: if pkg == dist.rsplit('-', 2)[0]: break else: sys.exit("Package %s is not installed in %s" % (pkg, prefix)) print(pkg) print('-' * len(str(pkg))) print() if args.subcommand == 'linkages': if not sys.platform.startswith(('linux', 'darwin')): sys.exit( "Error: conda inspect linkages is only implemented in Linux and OS X" ) if dist == untracked_package: obj_files = get_untracked_obj_files(prefix) else: obj_files = get_package_obj_files(dist, prefix) linkages = get_linkages(obj_files, prefix) depmap = defaultdict(list) for binary in linkages: for lib, path in linkages[binary]: path = replace_path(binary, path, prefix) if path not in { '', 'not found' } else path if path.startswith(prefix): deps = list(which_package(path)) if len(deps) > 1: print( "Warning: %s comes from multiple packages: %s" % (path, ' and '.join(deps)), file=sys.stderr) if not deps: if exists(path): depmap['untracked'].append( (lib, path.split(prefix + '/', 1)[-1], binary)) else: depmap['not found'].append( (lib, path.split(prefix + '/', 1)[-1], binary)) for d in deps: depmap[d].append((lib, path.split(prefix + '/', 1)[-1], binary)) elif path == 'not found': depmap['not found'].append((lib, path, binary)) else: depmap['system'].append((lib, path, binary)) print_linkages(depmap, show_files=args.show_files) if args.subcommand == 'objects': if not sys.platform.startswith('darwin'): sys.exit( "Error: conda inspect objects is only implemented in OS X") if dist == untracked_package: obj_files = get_untracked_obj_files(prefix) else: obj_files = get_package_obj_files(dist, prefix) info = [] for f in obj_files: f_info = {} path = join(prefix, f) f_info['filetype'] = human_filetype(path) f_info['rpath'] = get_rpath(path) f_info['filename'] = f info.append(f_info) print_object_info(info, args.groupby)
def execute(args, parser): if args.args: for arg in args.args: if isfile(arg): from conda.misc import which_package path = arg for dist in which_package(path): print("%-50s %s" % (path, dist)) else: show_pkg_info(arg) return import os from os.path import basename, dirname, isdir, join import conda import conda.config as config from conda.cli.main_init import is_initialized options = "envs", "system", "license" info_dict = dict( platform=config.subdir, conda_version=conda.__version__, root_prefix=config.root_dir, root_writable=config.root_writable, pkgs_dirs=config.pkgs_dirs, envs_dirs=config.envs_dirs, default_prefix=config.default_prefix, channels=config.get_channel_urls(), rc_path=config.rc_path, is_foreign=bool(config.foreign), envs=[], ) if args.all or args.json: for option in options: setattr(args, option, True) if args.all or all(not getattr(args, opt) for opt in options): for key in "pkgs_dirs", "envs_dirs", "channels": info_dict["_" + key] = ("\n" + 24 * " ").join(info_dict[key]) info_dict["_rtwro"] = "writable" if info_dict["root_writable"] else "read only" print( """\ Current conda install: platform : %(platform)s conda version : %(conda_version)s root environment : %(root_prefix)s (%(_rtwro)s) default environment : %(default_prefix)s envs directories : %(_envs_dirs)s package cache : %(_pkgs_dirs)s channel URLs : %(_channels)s config file : %(rc_path)s is foreign system : %(is_foreign)s """ % info_dict ) if not is_initialized(): print( """\ # NOTE: # root directory '%s' uninitalized, # use 'conda init' to initialize.""" % config.root_dir ) if args.envs: if not args.json: print("# conda environments:") print("#") def disp_env(prefix): fmt = "%-20s %s %s" default = "*" if prefix == config.default_prefix else " " name = config.root_env_name if prefix == config.root_dir else basename(prefix) if not args.json: print(fmt % (name, default, prefix)) for envs_dir in config.envs_dirs: if not isdir(envs_dir): continue for dn in sorted(os.listdir(envs_dir)): if dn.startswith("."): continue prefix = join(envs_dir, dn) if isdir(prefix): prefix = join(envs_dir, dn) disp_env(prefix) info_dict["envs"].append(prefix) disp_env(config.root_dir) print() if args.system and not args.json: import sys from conda.cli.find_commands import find_commands, find_executable print("sys.version: %s..." % (sys.version[:40])) print("sys.prefix: %s" % sys.prefix) print("sys.executable: %s" % sys.executable) print("conda location: %s" % dirname(conda.__file__)) for cmd in sorted(set(find_commands() + ["build"])): print("conda-%s: %s" % (cmd, find_executable(cmd))) print() evars = ["PATH", "PYTHONPATH", "CONDA_DEFAULT_ENV", "CIO_TEST", "CONDA_ENVS_PATH"] if config.platform == "linux": evars.append("LD_LIBRARY_PATH") elif config.platform == "osx": evars.append("DYLD_LIBRARY_PATH") for ev in sorted(evars): print("%s: %s" % (ev, os.getenv(ev, "<not set>"))) print() if args.license and not args.json: try: from _license import show_info show_info() except ImportError: print( """\ WARNING: could import _license.show_info # try: # $ conda install -n root _license""" ) if args.json: common.stdout_json(info_dict)
def execute(args, parser): if not args.subcommand: parser.print_help() exit() prefix = get_prefix(args) installed = ci.linked(prefix) if not args.packages and not args.untracked and not args.all: parser.error("At least one package or --untracked or --all must be provided") if args.all: args.packages = sorted([i.rsplit('-', 2)[0] for i in installed]) if args.untracked: args.packages.append(untracked_package) if args.subcommand == 'linkages': pkgmap = {} for pkg in args.packages: if pkg == untracked_package: dist = untracked_package else: for dist in installed: if pkg == dist.rsplit('-', 2)[0]: break else: sys.exit("Package %s is not installed in %s" % (pkg, prefix)) if not sys.platform.startswith(('linux', 'darwin')): sys.exit("Error: conda inspect linkages is only implemented in Linux and OS X") if dist == untracked_package: obj_files = get_untracked_obj_files(prefix) else: obj_files = get_package_obj_files(dist, prefix) linkages = get_linkages(obj_files, prefix) depmap = defaultdict(list) pkgmap[pkg] = depmap depmap['not found'] = [] for binary in linkages: for lib, path in linkages[binary]: path = replace_path(binary, path, prefix) if path not in {'', 'not found'} else path if path.startswith(prefix): deps = list(which_package(path)) if len(deps) > 1: print("Warning: %s comes from multiple packages: %s" % (path, comma_join(deps)), file=sys.stderr) if not deps: if exists(path): depmap['untracked'].append((lib, path.split(prefix + '/', 1)[-1], binary)) else: depmap['not found'].append((lib, path.split(prefix + '/', 1)[-1], binary)) for d in deps: depmap[d].append((lib, path.split(prefix + '/', 1)[-1], binary)) elif path == 'not found': depmap['not found'].append((lib, path, binary)) else: depmap['system'].append((lib, path, binary)) if args.groupby == 'package': for pkg in args.packages: print(pkg) print('-'*len(str(pkg))) print() print_linkages(pkgmap[pkg], show_files=args.show_files) elif args.groupby == 'dependency': # {pkg: {dep: [files]}} -> {dep: {pkg: [files]}} inverted_map = defaultdict(lambda: defaultdict(list)) for pkg in pkgmap: for dep in pkgmap[pkg]: if pkgmap[pkg][dep]: inverted_map[dep][pkg] = pkgmap[pkg][dep] # print system and not found last k = sorted(set(inverted_map.keys()) - {'system', 'not found'}) for dep in k + ['system', 'not found']: print(dep) print('-'*len(str(dep))) print() print_linkages(inverted_map[dep], show_files=args.show_files) else: raise ValueError("Unrecognized groupby: %s" % args.groupby) if args.subcommand == 'objects': for pkg in args.packages: if pkg == untracked_package: dist = untracked_package else: for dist in installed: if pkg == dist.rsplit('-', 2)[0]: break else: sys.exit("Package %s is not installed in %s" % (pkg, prefix)) print(pkg) print('-'*len(str(pkg))) print() if not sys.platform.startswith('darwin'): sys.exit("Error: conda inspect objects is only implemented in OS X") if dist == untracked_package: obj_files = get_untracked_obj_files(prefix) else: obj_files = get_package_obj_files(dist, prefix) info = [] for f in obj_files: f_info = {} path = join(prefix, f) f_info['filetype'] = human_filetype(path) f_info['rpath'] = ':'.join(get_rpaths(path)) f_info['filename'] = f info.append(f_info) print_object_info(info, args.groupby)
def execute(args, parser): if args.args: for arg in args.args: if isfile(arg): from conda.misc import which_package path = arg for dist in which_package(path): print('%-50s %s' % (path, dist)) else: show_pkg_info(arg) return import os from os.path import basename, dirname, isdir, join import conda import conda.config as config from conda.cli.main_init import is_initialized options = 'envs', 'system', 'license' info_dict = dict( platform=config.subdir, conda_version=conda.__version__, root_prefix=config.root_dir, root_writable=config.root_writable, pkgs_dirs=config.pkgs_dirs, envs_dirs=config.envs_dirs, default_prefix=config.default_prefix, channels=config.get_channel_urls(), rc_path=config.rc_path, is_foreign=bool(config.foreign), envs=[], python_version='.'.join(map(str, sys.version_info)), ) if args.all or args.json: for option in options: setattr(args, option, True) if args.all or all(not getattr(args, opt) for opt in options): for key in 'pkgs_dirs', 'envs_dirs', 'channels': info_dict['_' + key] = ('\n' + 24 * ' ').join(info_dict[key]) info_dict['_rtwro'] = ('writable' if info_dict['root_writable'] else 'read only') print("""\ Current conda install: platform : %(platform)s conda version : %(conda_version)s python version : %(python_version)s root environment : %(root_prefix)s (%(_rtwro)s) default environment : %(default_prefix)s envs directories : %(_envs_dirs)s package cache : %(_pkgs_dirs)s channel URLs : %(_channels)s config file : %(rc_path)s is foreign system : %(is_foreign)s """ % info_dict) if not is_initialized(): print("""\ # NOTE: # root directory '%s' uninitalized, # use 'conda init' to initialize.""" % config.root_dir) if args.envs: if not args.json: print("# conda environments:") print("#") def disp_env(prefix): fmt = '%-20s %s %s' default = '*' if prefix == config.default_prefix else ' ' name = (config.root_env_name if prefix == config.root_dir else basename(prefix)) if not args.json: print(fmt % (name, default, prefix)) for envs_dir in config.envs_dirs: if not isdir(envs_dir): continue for dn in sorted(os.listdir(envs_dir)): if dn.startswith('.'): continue prefix = join(envs_dir, dn) if isdir(prefix): prefix = join(envs_dir, dn) disp_env(prefix) info_dict['envs'].append(prefix) disp_env(config.root_dir) print() if args.system and not args.json: from conda.cli.find_commands import find_commands, find_executable print("sys.version: %s..." % (sys.version[:40])) print("sys.prefix: %s" % sys.prefix) print("sys.executable: %s" % sys.executable) print("conda location: %s" % dirname(conda.__file__)) for cmd in sorted(set(find_commands() + ['build'])): print("conda-%s: %s" % (cmd, find_executable(cmd))) print() evars = [ 'PATH', 'PYTHONPATH', 'CONDA_DEFAULT_ENV', 'CIO_TEST', 'CONDA_ENVS_PATH' ] if config.platform == 'linux': evars.append('LD_LIBRARY_PATH') elif config.platform == 'osx': evars.append('DYLD_LIBRARY_PATH') for ev in sorted(evars): print("%s: %s" % (ev, os.getenv(ev, '<not set>'))) print() if args.license and not args.json: try: from _license import show_info show_info() except ImportError: print("""\ WARNING: could import _license.show_info # try: # $ conda install -n root _license""") if args.json: common.stdout_json(info_dict)
def execute(args, parser): if not args.subcommand: parser.print_help() exit() prefix = get_prefix(args) installed = ci.linked(prefix) if not args.packages and not args.untracked and not args.all: parser.error( "At least one package or --untracked or --all must be provided") if args.all: args.packages = sorted([i.rsplit('-', 2)[0] for i in installed]) if args.untracked: args.packages.append(untracked_package) if args.subcommand == 'linkages': pkgmap = {} for pkg in args.packages: if pkg == untracked_package: dist = untracked_package else: for dist in installed: if pkg == dist.rsplit('-', 2)[0]: break else: sys.exit("Package %s is not installed in %s" % (pkg, prefix)) if not sys.platform.startswith(('linux', 'darwin')): sys.exit( "Error: conda inspect linkages is only implemented in Linux and OS X" ) if dist == untracked_package: obj_files = get_untracked_obj_files(prefix) else: obj_files = get_package_obj_files(dist, prefix) linkages = get_linkages(obj_files, prefix) depmap = defaultdict(list) pkgmap[pkg] = depmap depmap['not found'] = [] for binary in linkages: for lib, path in linkages[binary]: path = replace_path(binary, path, prefix) if path not in { '', 'not found' } else path if path.startswith(prefix): deps = list(which_package(path)) if len(deps) > 1: print( "Warning: %s comes from multiple packages: %s" % (path, comma_join(deps)), file=sys.stderr) if not deps: if exists(path): depmap['untracked'].append( (lib, path.split(prefix + '/', 1)[-1], binary)) else: depmap['not found'].append( (lib, path.split(prefix + '/', 1)[-1], binary)) for d in deps: depmap[d].append((lib, path.split(prefix + '/', 1)[-1], binary)) elif path == 'not found': depmap['not found'].append((lib, path, binary)) else: depmap['system'].append((lib, path, binary)) if args.groupby == 'package': for pkg in args.packages: print(pkg) print('-' * len(str(pkg))) print() print_linkages(pkgmap[pkg], show_files=args.show_files) elif args.groupby == 'dependency': # {pkg: {dep: [files]}} -> {dep: {pkg: [files]}} inverted_map = defaultdict(lambda: defaultdict(list)) for pkg in pkgmap: for dep in pkgmap[pkg]: if pkgmap[pkg][dep]: inverted_map[dep][pkg] = pkgmap[pkg][dep] # print system and not found last k = sorted(set(inverted_map.keys()) - {'system', 'not found'}) for dep in k + ['system', 'not found']: print(dep) print('-' * len(str(dep))) print() print_linkages(inverted_map[dep], show_files=args.show_files) else: raise ValueError("Unrecognized groupby: %s" % args.groupby) if args.subcommand == 'objects': for pkg in args.packages: if pkg == untracked_package: dist = untracked_package else: for dist in installed: if pkg == dist.rsplit('-', 2)[0]: break else: sys.exit("Package %s is not installed in %s" % (pkg, prefix)) print(pkg) print('-' * len(str(pkg))) print() if not sys.platform.startswith('darwin'): sys.exit( "Error: conda inspect objects is only implemented in OS X") if dist == untracked_package: obj_files = get_untracked_obj_files(prefix) else: obj_files = get_package_obj_files(dist, prefix) info = [] for f in obj_files: f_info = {} path = join(prefix, f) f_info['filetype'] = human_filetype(path) f_info['rpath'] = ':'.join(get_rpaths(path)) f_info['filename'] = f info.append(f_info) print_object_info(info, args.groupby)
def execute(args, parser): if args.args: for arg in args.args: if isfile(arg): from conda.misc import which_package path = arg for dist in which_package(path): print('%-50s %s' % (path, dist)) else: show_pkg_info(arg) return import os from os.path import basename, dirname, isdir, join import conda import conda.config as config from conda.cli.main_init import is_initialized options = 'envs', 'system', 'license' info_dict = dict(platform=config.subdir, conda_version=conda.__version__, root_prefix=config.root_dir, root_writable=config.root_writable, pkgs_dirs=config.pkgs_dirs, envs_dirs=config.envs_dirs, default_prefix=config.default_prefix, channels=config.get_channel_urls(), rc_path=config.rc_path, is_foreign=bool(config.foreign), envs=[]) if args.all or args.json: for option in options: setattr(args, option, True) if args.all or all(not getattr(args, opt) for opt in options): for key in 'pkgs_dirs', 'envs_dirs', 'channels': info_dict['_' + key] = ('\n' + 24 * ' ').join(info_dict[key]) info_dict['_rtwro'] = ('writable' if info_dict['root_writable'] else 'read only') print("""\ Current conda install: platform : %(platform)s conda version : %(conda_version)s root environment : %(root_prefix)s (%(_rtwro)s) default environment : %(default_prefix)s envs directories : %(_envs_dirs)s package cache : %(_pkgs_dirs)s channel URLs : %(_channels)s config file : %(rc_path)s is foreign system : %(is_foreign)s """ % info_dict) if not is_initialized(): print("""\ # NOTE: # root directory '%s' uninitalized, # use 'conda init' to initialize.""" % config.root_dir) if args.envs: if not args.json: print("# conda environments:") print("#") def disp_env(prefix): fmt = '%-20s %s %s' default = '*' if prefix == config.default_prefix else ' ' name = (config.root_env_name if prefix == config.root_dir else basename(prefix)) if not args.json: print(fmt % (name, default, prefix)) for envs_dir in config.envs_dirs: if not isdir(envs_dir): continue for dn in sorted(os.listdir(envs_dir)): if dn.startswith('.'): continue prefix = join(envs_dir, dn) if isdir(prefix): prefix = join(envs_dir, dn) disp_env(prefix) info_dict['envs'].append(prefix) disp_env(config.root_dir) print() if args.system and not args.json: import sys print("sys.version: %s..." % (sys.version[:40])) print("sys.prefix: %s" % sys.prefix) print("sys.executable: %s" % sys.executable) print("conda location: %s" % dirname(conda.__file__)) print() evars = ['PATH', 'PYTHONPATH', 'CONDA_DEFAULT_ENV', 'CIO_TEST', 'CONDA_ENVS_PATH'] if config.platform == 'linux': evars.append('LD_LIBRARY_PATH') elif config.platform == 'osx': evars.append('DYLD_LIBRARY_PATH') for ev in sorted(evars): print("%s: %s" % (ev, os.getenv(ev, '<not set>'))) print() if args.license and not args.json: try: from _license import show_info show_info() except ImportError: print("""\ WARNING: could import _license.show_info # try: # $ conda install -n root _license""") if args.json: common.stdout_json(info_dict)
def execute(args, parser): import os from os.path import basename, dirname import conda import conda.config as config import conda.misc as misc from conda.cli.main_init import is_initialized from conda.api import get_package_versions, app_is_installed from conda.install import is_linked if args.args: results = defaultdict(list) for arg in args.args: if isfile(arg): from conda.misc import which_package path = arg for dist in which_package(path): if args.json: results[arg].append(dist) else: print('%-50s %s' % (path, dist)) elif arg.endswith('.tar.bz2'): info = None for prefix in misc.list_prefixes(): info = is_linked(prefix, arg[:-8]) if info: break if not info: if args.json: results[arg] = {'installed': []} else: print("Package %s is not installed" % arg) continue info['installed'] = app_is_installed(arg) if args.json: results[arg] = info else: print(arg) print(' %-15s %30s' % ('installed', bool(info.get('installed')))) for key in ('name', 'version', 'build', 'license', 'platform', 'arch', 'size', 'summary'): print(' %-15s %30s' % (key, info.get(key))) else: if args.json: for pkg in get_package_versions(arg): results[arg].append(pkg._asdict()) else: show_pkg_info(arg) if args.json: common.stdout_json(results) return options = 'envs', 'system', 'license' try: import requests requests_version = requests.__version__ except ImportError: requests_version = "could not import" except Exception as e: requests_version = "Error %s" % e try: import conda_build except ImportError: conda_build_version = "not installed" except Exception as e: conda_build_version = "Error %s" % e else: conda_build_version = conda_build.__version__ info_dict = dict( platform=config.subdir, conda_version=conda.__version__, conda_build_version=conda_build_version, root_prefix=config.root_dir, root_writable=config.root_writable, pkgs_dirs=config.pkgs_dirs, envs_dirs=config.envs_dirs, default_prefix=config.default_prefix, channels=config.get_channel_urls(), rc_path=config.rc_path, is_foreign=bool(config.foreign), envs=[], python_version='.'.join(map(str, sys.version_info)), requests_version=requests_version, ) if args.all or args.json: for option in options: setattr(args, option, True) info_dict['channels_disp'] = [ config.hide_binstar_tokens(c) for c in info_dict['channels'] ] if args.all or all(not getattr(args, opt) for opt in options): for key in 'pkgs_dirs', 'envs_dirs', 'channels_disp': info_dict['_' + key] = ('\n' + 24 * ' ').join(info_dict[key]) info_dict['_rtwro'] = ('writable' if info_dict['root_writable'] else 'read only') print("""\ Current conda install: platform : %(platform)s conda version : %(conda_version)s conda-build version : %(conda_build_version)s python version : %(python_version)s requests version : %(requests_version)s root environment : %(root_prefix)s (%(_rtwro)s) default environment : %(default_prefix)s envs directories : %(_envs_dirs)s package cache : %(_pkgs_dirs)s channel URLs : %(_channels_disp)s config file : %(rc_path)s is foreign system : %(is_foreign)s """ % info_dict) if not is_initialized(): print("""\ # NOTE: # root directory '%s' uninitalized, # use 'conda init' to initialize.""" % config.root_dir) del info_dict['channels_disp'] if args.envs: if not args.json: print("# conda environments:") print("#") def disp_env(prefix): fmt = '%-20s %s %s' default = '*' if prefix == config.default_prefix else ' ' name = (config.root_env_name if prefix == config.root_dir else basename(prefix)) if not args.json: print(fmt % (name, default, prefix)) for prefix in misc.list_prefixes(): disp_env(prefix) if prefix != config.root_dir: info_dict['envs'].append(prefix) print() if args.system and not args.json: from conda.cli.find_commands import find_commands, find_executable print("sys.version: %s..." % (sys.version[:40])) print("sys.prefix: %s" % sys.prefix) print("sys.executable: %s" % sys.executable) print("conda location: %s" % dirname(conda.__file__)) for cmd in sorted(set(find_commands() + ['build'])): print("conda-%s: %s" % (cmd, find_executable(cmd))) print("user site dirs: ", end='') site_dirs = get_user_site() if site_dirs: print(site_dirs[0]) else: print() for site_dir in site_dirs[1:]: print(' %s' % site_dir) print() evars = [ 'PATH', 'PYTHONPATH', 'PYTHONHOME', 'CONDA_DEFAULT_ENV', 'CIO_TEST', 'CONDA_ENVS_PATH' ] if config.platform == 'linux': evars.append('LD_LIBRARY_PATH') elif config.platform == 'osx': evars.append('DYLD_LIBRARY_PATH') for ev in sorted(evars): print("%s: %s" % (ev, os.getenv(ev, '<not set>'))) print() if args.license and not args.json: try: from _license import show_info show_info() except ImportError: print("""\ WARNING: could import _license.show_info # try: # $ conda install -n root _license""") if args.json: common.stdout_json(info_dict)