Ejemplo n.º 1
0
def install_package(
    versioned_package: str,
    env_dir: pathlib.Path,
    out_dir: pathlib.Path,
    verbose: bool = True,
    exit: bool = False,
):
    """
    Installs a package into an isolated environment
    :param versioned_package:
    :param env_dir:
    :param out_dir:
    :param verbose:
    :param exit:
    :return:
    """
    # Create an empty environment
    run_command(
        "create", "--yes", "--quiet", "--prefix", env_dir,
    )

    with activate_env(pathlib.Path(env_dir)):
        # Generate the query plan concurrently
        solver = Solver(
            str(env_dir),
            ["bioconda", "conda-forge", "r", "main", "free"],
            specs_to_add=[versioned_package],
        )
        try:
            transaction = solver.solve_for_transaction()
        except Exception as e:
            handle_exception(
                e,
                msg="Installing the package {}".format(versioned_package),
                log_path=(out_dir / versioned_package).with_suffix(".error.txt"),
                print=verbose,
                exit=exit,
            )
            return

        # We can't run the installs concurrently, because they used the shared conda packages cache
        with lock:
            transaction.download_and_extract()
            transaction.execute()
Ejemplo n.º 2
0
    def install(self, prefix):
        specs = [
            pkg.to_matchspec() for pkg in self.envionrment_model.conda_packages
        ]
        if len(specs) > 0:
            solver = Solver(prefix,
                            self.envionrment_model.config.channels,
                            subdirs=self.envionrment_model.config.subdirs,
                            specs_to_add=specs)
            unlink_link_transaction = solver.solve_for_transaction()
            TransactionHandler(unlink_link_transaction).execute(
                prefix, self.envionrment_model.conda_packages, True)

        pip_pkgs = [
            "%s==%s" % (pkg.name, pkg.version)
            for pkg in self.envionrment_model.pip_packages
        ]
        if len(pip_pkgs) > 0:
            pip_args = ["install"] + pip_pkgs
            pip_util.pip_subprocess(pip_args, prefix, None)
Ejemplo n.º 3
0
    'openforcefields',
    'smirnoff99Frosst',
    'pyyaml',
    'toml',
    'bson',
    'msgpack-python',
    'xmltodict',
    'qcelemental',
    'qcportal',
    'qcengine',
]

failed = []
succeeded = []

for dep in deps:
    print(f"Trying dep {dep} ...")
    solver = Solver(prefix='/Users/mwt/software/miniconda3/bin/python',
                    channels=['conda-forge', 'omnia', 'defaults'],
                    specs_to_add=[dep, 'python=3.8'])
    try:
        solver.solve_final_state()
        succeeded.append(dep)
    except UnsatisfiableError:
        failed.append(dep)

print("The following packages are (probably) shipped with Python 3.8:")
print(succeeded)
print("The following packages are (probably) NOT shipped with Python 3.8:")
print(failed)