繁体   English   中英

创建 Conda 环境时如何修复“ResolvePackageNotFound”错误?

[英]How to fix `ResolvePackageNotFound` error when creating Conda environment?

当我运行以下命令时: 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。

为了提高求解性能,Conda v4.7 删除了 Anaconda 云存储库的一个分支,称为免费通道 不幸的是,这包括许多从未移植到保留的存储库分支的旧包。 此处失败的要求受此影响。

恢复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]

成功找到 package,其他类似。

选项 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 search -c free pytables=3.4.2[build=np113py35_0]

请注意,这些方法中的任何一种都只会在此特定搜索中使用免费频道,并且任何未来的搜索或对 env 的更改都不会搜索该频道。

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

如果您有一个特定的环境,您总是希望可以访问免费频道,但您不想全局设置此选项,您可以改为仅为环境设置配置选项。

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

可以通过分别设置和取消设置位于etc/conda/activate.detc/conda/deactivate.d文件夹中的脚本中的CONDA_RESTORE_FREE_CHANNEL变量来实现类似的效果。 有关示例,请参阅文档

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

解决方案是使用标志“--no-buils”,但它不能保证environment.yml实际上是兼容的。 在 Anaconda 的 Windows 通道上找不到某些库,例如libgfortran (请参见此处)。

我会用

CONDA_RESTORE_FREE_CHANNEL=1 conda env create -f

继续使用过时/旧的软件包

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM