分别解决,然后再安装Conda环境。

问题描述 投票:0回答:1

我正在做一个任务,涉及到分析bioconda中每个包的最新版本。这不能用一个大的环境来完成,因为解决这样一个大环境的依赖关系需要几天时间,甚至可能无法保证每个包的最新版本。出于这个原因,我试图将每个包分别安装在自己的conda环境中。

为了加快这个速度,我试图尽可能的并行化。现在我知道 软件包安装不能同时运行。 中,因为每个进程都需要对包缓存的写权限。然而,在我看来,创建和然后 解答 环境可以同时运行,我只需要串行安装包。

现在,我可以并行运行解,通过运行 conda install my_package --json --dry-run > plan.json 在每个进程中,它都会输出一个很好的JSON文件来描述每个环境的解。如果我有这个输出,我如何告诉conda "使用这个已经解决的执行计划安装包"?我的设想是这样的 conda install --plan plan.json但这样的标志并不存在。

如何将conda环境的求解和安装分开?或者说,也许有其他方法可以用不同的方式安装大量的conda环境?

python anaconda conda
1个回答
2
投票

至少从4.6版本开始,Conda已经暴露了一个 测试版API到 Solver 阶层. 原来这可以让你做我需要的事情。它还在测试阶段,所以与 免责声明,这可能会在未来的conda版本中被打破。目前,您可以在Conda中这样做 4.8.x:

from conda.api import Solver

# Solve the environment, which can be done concurrently
solver = Solver(
    dir, # The location of the conda environment
    ["bioconda", "conda-forge"], # A list of conda channels to use
    specs_to_add=["bwa=0.7.17"], # A list of packages to install
)
transaction = solver.solve_for_transaction()

# This part must be done serially, so use a multiprocessing.Lock here
with lock:
    transaction.download_and_extract()
    transaction.execute()
© www.soinside.com 2019 - 2024. All rights reserved.