8

我一直在尝试使用这个 yml 文件来创建一个环境(我创建了 yml):

name: testenv
channels:
- esri
- scitools
- obspy
- conda-forge
- defaults
dependencies:
- appnope=0.1.0=py36_0
- libgfortran=3.0.0=0
- pip=9.0.1=py36_0
- python=3.6.2=0
- wheel=0.30.0=py_1
- pip:
  - ipython-genutils==0.2.0
  - jupyter-client==5.1.0
  - jupyter-console==5.1.0
  - jupyter-core==4.3.0
  - prompt-toolkit==1.0.15

但是它总是失败并显示以下错误消息:

Using Anaconda API: https://api.anaconda.org
Solving environment: failed

ResolvePackageNotFound:
  - wheel==0.30.0=py_1
  - appnope==0.1.0=py36_0

它是在寻找错误的渠道吗?如果我只是将它们安装在基本 conda 安装中,我可以找到这些包。谢谢你的帮助。

4

4 回答 4

15

问题是 Anaconda 没有对我撒谎。这些包不存在于 linux 频道中,但它们确实存在于 OSX 频道中。所以这是一个特定于平台的问题。

于 2018-01-25T13:39:56.357 回答
6

有同样的问题。通过删除构建版本和包版本来解决它(除了必要的包版本python=3.6.2和任何其他版本。)最终的 yml 文件看起来像这样,以便完全跨平台:

name: testenv
channels:
- esri
- scitools
- obspy
- conda-forge
- defaults
dependencies:
- appnope
- libgfortran
- pip
- python=3.6.2
- wheel
- pip:
  - ipython-genutils
  - jupyter-client==5.1.0
  - jupyter-console
  - jupyter-core
  - prompt-toolkit
于 2019-03-13T03:19:07.257 回答
2

有时发现它比包版本控制pip做得更好。anaconda所以在“激活”那个anaconda环境之后,我做

while read req; do conda install --yes $req || pip install $req; done < ./requirements.txt

这种方式首先我使用 anaconda,如果失败我尝试pip. 请注意,我建议“激活”anaconda 环境,然后运行上述命令,否则会污染全局 pip 池。

于 2019-09-16T22:21:33.887 回答
1

扩展@msamon 的答案。我有同样的错误,他们的回答解决了 90% 的问题。然而,仍然有一些软件包仍然无法解决。这是因为某些 Windows 安装/软件包将具有特定于 Windows 的库,这些库当然永远不会在 Linux 上可用。

解决方案是删除版本控制值,再次运行 Conda 环境安装,然后从 .yml 中完全删除任何标记为不存在的剩余包。让 Conda 处理任何由此产生的缺失依赖项和/或重构您的代码以使用在 Linux 通道上具有分发的不同库。

我通过 Conda4.9.2 使用 .yml 从 Windows 10 机器到安装了 Python3.6 的 Linux 远程机器验证了这种方法。

于 2021-06-22T15:55:26.787 回答