def create_bundle(prefix): """ Create a "bundle package" of the environment located in `prefix`, and return the full path to the created package. This file is created in a temp directory, and it is the callers responsibility to remove this directory (after the file has been handled in some way). This bundle is a regular meta-package which lists (in its requirements) all Anaconda packages installed (not packages the user created manually), and all files in the prefix which are not installed from Anaconda packages. When putting this packages into a conda repository, it can be used to created a new environment using the conda create command. """ info = dict( name = 'share', build = '0', build_number = 0, platform = config.platform, arch = config.arch_name, depends = get_requires(prefix), ) tmp_dir = tempfile.mkdtemp() tmp_path = join(tmp_dir, 'share.tar.bz2') warnings = create_conda_pkg(prefix, untracked(prefix, exclude_self_build=True), info, tmp_path, update_info) path = join(tmp_dir, '%(name)s-%(version)s-%(build)s.tar.bz2' % info) os.rename(tmp_path, path) return path, warnings
def pip(prefix, pkg_request): if sys.platform == 'win32': pip_path = join(prefix, 'Scripts', 'pip.bat') else: pip_path = join(prefix, 'bin', 'pip') if not isfile(pip_path): raise RuntimeError('pip does not appear to be installed in prefix: ' '%r' % prefix) files_before = untracked(prefix) try: check_call([pip_path, 'install', pkg_request]) except CalledProcessError: return packup_and_reinstall(prefix, files_before, to_name(pkg_request))