问题描述
我想使用数据科学库 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