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

Mpe*_*ths 4 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
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

我在 Mac OS X 上工作。

mer*_*erv 10

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

恢复free频道搜索

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

conda search pytables=3.4.2[build=np113py35_0]
Run Code Online (Sandbox Code Playgroud)

失败,而

CONDA_RESTORE_FREE_CHANNEL=1 conda search pytables=3.4.2[build=np113py35_0]
Run Code Online (Sandbox Code Playgroud)

成功找到包裹,其他人也一样。

选项 1:永久设置

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

conda config --set restore_free_channel true
conda env create -f virtual_platform_mac.yml
Run Code Online (Sandbox Code Playgroud)

选项 2:临时设置

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

Unix/Linux

CONDA_RESTORE_FREE_CHANNEL=1 conda env create -f virtual_platform_mac.yml
Run Code Online (Sandbox Code Playgroud)

视窗

SET CONDA_RESTORE_FREE_CHANNEL=1
conda env create -f virtual_platform_mac.yaml
Run Code Online (Sandbox Code Playgroud)

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

手动包含频道

也可以手动将频道包含为要搜索的频道:

conda search -c free pytables=3.4.2[build=np113py35_0]
Run Code Online (Sandbox Code Playgroud)

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

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

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

conda activate my_env
conda config --env --set restore_free_channel true
Run Code Online (Sandbox Code Playgroud)

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