创建Conda环境时如何解决`ResolvePackageNotFound`错误?

时间:2019-10-03 13:14:38

标签: python anaconda conda

当我运行以下命令时: conda env create -f virtual_platform_mac.yml

我收到此错误

Collecting package metadata (repodata.json): done
Solving environment: failed

ResolvePackageNotFound: 
  - pytables==3.4.2=np113py35_0
  - h5py==2.7.0=np113py35_0
  - anaconda==custom=py35_0

我该如何解决?

我正在Mac OS X上工作。

3 个答案:

答案 0 :(得分:2)

Conda v4.7 dropped a branch of the Anaconda Cloud repository called the free channel是为了提高求解性能。不幸的是,这包括许多以前的软件包,这些软件包从未移植到保留的存储库分支中。此处失败的需求受此影响。

还原free频道搜索

Conda提供了一种通过restore_free_channel配置选项恢复对存储库这一部分的访问的方法。您可以通过查看

来验证这是问题所在
conda search pytables=3.4.2[build=np113py35_0]

失败,而

CONDA_RESTORE_FREE_CHANNEL=1 conda search pytables=3.4.2[build=np113py35_0]

成功找到了包,其他包也找到了

选项1:永久设置

如果您希望经常需要较旧的软件包,则可以全局设置该选项,然后继续安装:

conda config --set restore_free_channel true
conda env create -f virtual_platform_mac.yml

选项2:临时设置

与所有Conda配置选项一样,您也可以使用相应的环境变量仅针对以下命令临时恢复访问:

Unix / Linux

CONDA_RESTORE_FREE_CHANNEL=1 conda env create -f virtual_platform_mac.yml

Windows

SET CONDA_RESTORE_FREE_CHANNEL=1
conda env create -f virtual_platform_mac.yaml

(是的,我意识到..._mac.yaml的认知失调,但Windows用户也需要帮助。)

专业提示:特定于环境的设置

如果您有一个特定的环境,但您始终希望访问免费频道,但又不想全局设置此选项,则可以仅针对环境设置配置选项。

conda activate my_env
conda config --env --set restore_free_channel true

可以通过分别在放置在CONDA_RESTORE_FREE_CHANNELetc/conda/activate.d文件夹中的脚本中设置和取消设置etc/conda/deactivate.d变量来实现类似的效果。参见the documentation for an example

答案 1 :(得分:0)

可以解释另一种解决方案here。基本上,如果您将 environment.yml 文件导入不同的操作系统(例如,从 macOS 到 Windows),您将收到构建错误。

解决方案是使用标志“--no-buils”,但它并不能保证environment.yml 实际上是兼容的。一些图书馆,例如libgfortran,在 Anaconda 的 Windows 频道上找不到(请参阅 here)。

答案 2 :(得分:-1)

我会用

CONDA_RESTORE_FREE_CHANNEL=1 conda env create -f

继续使用过期/较旧的软件包