使用频道时,Conda无法解析requirements.yml

时间:2016-11-15 21:06:50

标签: python anaconda conda miniconda

我尝试使用从另一个conda环境生成的requirements.yml文件来创建一个使用miniconda的环境。我遇到了来自渠道的软件包的麻烦。

在计算机上,使用以下命令从现有环境生成requirements.yml

(myenv)$ conda env export > requirements.yml

requirements.yml文件的内容是(在清除版本号后):

name: myenv
channels: !!python/tuple
- !!python/unicode
 'defaults'
dependencies:
- pytest
- conda-forge::pytest-xdist
- pytest-cov
- numpy
- scipy
- pymongo
- auto::pycallgraph
- flask
- conda-forge::flask-restful
- conda-forge::flask-httpauth
- blaze::flask-mongoengine
- hugo::flask-security
- flask-wtf
- wtforms
- conda-forge::mongoengine
- pip:
 - descartes
prefix: .miniconda2/envs/myenv

已经安装了上述软件包"手动"通过指定频道,例如,

$(myenv) conda install -c conda-forge pytest-xdist

requirements.yml转移到另一台计算机(相同的架构,linux-64),conda在创建新环境时失败:

$ conda env create --file requirements.yml

Fetching package metadata .......
Solving package specifications: .
Error: Packages missing in current linux-64 channels: 
  - conda-forge::pytest-xdist
  - auto::pycallgraph
  - conda-forge::flask-restful
  - conda-forge::flask-httpauth
  - blaze::flask-mongoengine
  - hugo::flask-security
  - conda-forge::mongoengine

似乎conda无法解析语法<channel>::<package name>

使用的系统:docker image continuumio / miniconda。

您是否有任何想法如何从规范文件中很好地创建新环境(例如,对持续集成有用)?

1 个答案:

答案 0 :(得分:2)

解决方案1:

将conda更新到版本4.2.12(在我的情况下是4.1)

conda update conda

然后通过加载需求文件

来创建环境
conda env create -f requirements.yml

解决方案2:

在文件的channels部分添加频道名称,并删除包列表中的频道名称:

name: myenv
channels: !!python/tuple
- !!python/unicode
  'defaults'
- !!python/unicode
  'auto'
- !!python/unicode
  'conda-forge'
- !!python/unicode
  'blaze'
- !!python/unicode
  'hugo'
dependencies:
- pytest
- pytest-xdist
- pytest-cov
- numpy
- scipy
- pymongo
- pycallgraph
- flask
- flask-restful
- flask-httpauth
- flask-mongoengine
- flask-security
- flask-wtf
- wtforms
- mongoengine
- pip:
 - descartes
prefix: .miniconda2/envs/myenv