def create_env(env_name, conda_deps): """Create new environment given parsed dependencies Args: conda_dependencies: OrderedDict of the `dependencies` field in Conda's environment.yaml. `model.dependencies.conda` field in Model or Dataloader. env_name: Environment name """ # check if the environment already exists if env_exists(env_name): logger.info( "Conda environment: {0} already exists. Skipping the installation." .format(env_name)) return None # write the env to file env_dict = OrderedDict([("name", env_name), ("dependencies", conda_deps)]) tmp_dir = "/tmp/kipoi" if not os.path.exists(tmp_dir): os.makedirs(tmp_dir) tmp_file_path = "{tmp_dir}/{env_name}.yml".format(tmp_dir=tmp_dir, env_name=env_name) with open(tmp_file_path, 'w') as f: f.write(yaml_ordered_dump(env_dict, indent=4, default_flow_style=False)) # create the environment return create_env_from_file(tmp_file_path)
def to_env_file(self, env_name, path): """Dump the dependencies to a file """ with open(path, 'w') as f: d = self.to_env_dict(env_name) # add python if not present add_py = True for dep in d['dependencies']: if isinstance(dep, str) and dep.startswith("python"): add_py = False if add_py: d['dependencies'] = ["python"] + d['dependencies'] # ----- # remove fields that are empty out = [] for k in d: if not (isinstance(d[k], list) and len(d[k]) == 0): out.append((k, d[k])) # ----- f.write( yaml_ordered_dump(OrderedDict(out), indent=2, default_flow_style=False))