下载 conda 数据科学库而不解压缩包

问题描述

我想使用数据科学库 NumPy、Pandas、Pytorch 和 Hugging Face Transformer 创建一个 Python 环境。我使用 miniconda 创建环境并下载和安装库。 conda install,--download-only 中有一个标志,用于下载所需的软件包而不安装它们,然后从本地目录安装它们。即使 conda 只是下载软件包而不安装它们,它也会提取它们。

是否可以下载软件包而无需解压,然后在安装前解压?

解决方法

CLI 中没有简单的命令来阻止提取步骤。提取被视为 FETCH 操作的一部分,以在运行 LINK 操作以将包传输到指定环境之前填充包缓存。

另一种方法是手动执行某些操作。天真地,可以搜索 Anaconda Cloud 并手动下载,但是,通过求解器来确保软件包兼容性可能会更好。可以通过包含 --json 标志来查看要运行的操作的所有信息。可以将其过滤为仅 tarball URL,然后直接下载。下面是这些行的脚本(假设为 Linux/Unix):

文件:conda-download.sh

#!/bin/bash -l
conda create -dn null --json "$@" |\
    grep '"url"' | grep -oE 'https[^"]+' |\
    xargs wget -c

可以用作

./conda-download.sh -c conda-forge -c pytorch numpy pandas pytorch transformers

也就是说,它接受所有 conda create 参数,并且会本地下载所有 tarball。

忽略缓存包

如果您已经缓存了一些包,那么上面的将不会重新下载它们。相反,如果您希望下载环境所需的所有 tarball,那么您可以使用此替代版本,该版本使用一个空的临时目录覆盖包缓存:

文件:conda-download-all.sh

#!/bin/bash -l
tmp_dir=$(mktemp -d)

CONDA_PKGS_DIRS=$tmp_dir conda create -dn null --json "$@" |\
    grep '"url"' | grep -oE 'https[^"]+' |\
    xargs wget -c

rm -r $tmp_dir