首页 > 解决方案 > 为什么anaconda在创建新环境时会重新下载我已经拥有的包?

问题描述

我最近在几个项目中使用了anaconda3,每次为项目创建虚拟环境时,似乎anaconda 都在重新下载相同的包(例如pytorch)。

我是否配置错误或这种行为正常?

为了澄清,我正在学习斯坦福 CS224n 课程和我使用的作业:

conda env create --file env.yml

其中 env.yml 的形式为:

name: local_nmt
channels:
  - pytorch
  - defaults
dependencies:
  - python=3.5
  - numpy
  - scipy
  - tqdm
  - docopt
  - pytorch
  - nltk
  - torchvision

我无法在 anaconda 文档中做出解释。提前致谢!

标签: anacondaconda

解决方案


如果只指定包名或版本,那么 Conda 将默认抓取符合约束的最新版本。因此,任何具有较新版本的软件包都将导致下载。

离线模式

有一个--offline标志只使用包缓存中可用的内容。

指定构建

但是,这可能并不总是可行的(例如,您已将一些非缓存包添加到 YAML)。在这种情况下,可以另外指定构建(用作唯一标识符的类型)以对应于已缓存的版本。

不确定最干净的方法,但一种方法是首先从存在包的现有环境中导出 YAML(例如,conda export env > env.yaml),然后使用其中的规范填写您所在环境 YAML 的详细信息试图创造。

克隆

值得一提的是,还可以克隆现有环境:

conda create --clone old_env --name new_env

推荐阅读