anaconda - 为什么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 文档中做出解释。提前致谢!
解决方案
如果只指定包名或版本,那么 Conda 将默认抓取符合约束的最新版本。因此,任何具有较新版本的软件包都将导致下载。
离线模式
有一个--offline
标志只使用包缓存中可用的内容。
指定构建
但是,这可能并不总是可行的(例如,您已将一些非缓存包添加到 YAML)。在这种情况下,可以另外指定构建(用作唯一标识符的类型)以对应于已缓存的版本。
不确定最干净的方法,但一种方法是首先从存在包的现有环境中导出 YAML(例如,conda export env > env.yaml
),然后使用其中的规范填写您所在环境 YAML 的详细信息试图创造。
克隆
值得一提的是,还可以克隆现有环境:
conda create --clone old_env --name new_env
推荐阅读
- java - 构建 RecyclerView 时创建的自动生成文件出错
- python - Django UserSocialAuth 匹配查询不存在
- magento - Magento 1.9 中的促销规则
- flutter - 在运行 Flutter For Web 应用程序时,flutter 无法解决依赖关系。进程以退出代码 69 结束
- java - 如何连接 OSGI 包(通过包发送实体)?
- python - 无法遍历从 LibSVM 生成器创建的 tensorflow 数据集。NoneType 不支持项分配
- oracle - 自定义 FORMS_PATH 在 Oracle 表单 11G 中不起作用
- perl - 为什么这个抛出错误 Bad switch statement
- python - 在一个CNN中,如何查看多个filter的权重?
- laravel - Laravel 5 验证接受逗号分隔的字符串,最多 4 个数字