Python 创建康达环境:“创建康达环境”;发现冲突&引用;在解决环境问题时,以及;“寻找最短冲突路径”;长跑
我被提供了一个Python 创建康达环境:“创建康达环境”;发现冲突&引用;在解决环境问题时,以及;“寻找最短冲突路径”;长跑,python,ubuntu,dependencies,conda,environment,Python,Ubuntu,Dependencies,Conda,Environment,我被提供了一个environment.ubuntu.yml文件来创建一个conda环境。但是,运行conda create env--file environment.ubuntu.yml会得到以下输出: conda env create --file environment.ubuntu.yml Collecting package metadata (repodata.json): done Solving environment: - Found conflicts! Looking f
environment.ubuntu.yml
文件来创建一个conda环境。但是,运行conda create env--file environment.ubuntu.yml
会得到以下输出:
conda env create --file environment.ubuntu.yml
Collecting package metadata (repodata.json): done
Solving environment: -
Found conflicts! Looking for incompatible packages.
This can take several minutes. Press CTRL-C to abort.
Examining fontconfig: 5%|▉ | 10/202 [00:00<00:00, 5393.91it/ ]
Comparing specs that have this dependency: 0%| | 0/12 [00:00<?, ?it/s]
Finding shortest confli| path for fontconfig==2.13.1=he4413a7_1000: 12%|▏| 1/8
Finding shortest conflict path for fontconfig==2.13.1=he4413a7_1000: 25%|▎| 2/8
Finding shortest conflict pa/ for fontconfig[version='>=2.13.0,<3.0a0']: 25%|
Finding shortest conflict path for fontconfig[version='>=2.13.0,<3.0a0']: 38%|
Finding shortest conf- ct path for fontconfig[version='>=2.11.1']: 38%|▍| 3/8 [
Finding shortest conflict path for fontconfig[version='>=2.11.1']: 50%|▌| 4/8 [
Finding shortest conflict pa| for fontconfig[version='>=2.12.4,<3.0a0']: 50%|
...
在我的例子中,我替换了一些构建版本(
..=he4413a7_1000
部分),因为原始文件中的版本在conda forge
上被重新标记为breaked
。但是,即使这些依赖项的版本号没有更改,它们的子依赖项也发生了更改,导致了所有这些冲突。底线是:不要手动处理依赖项
我通过保留原始构建版本规范,并将
conda forge/labels/breaked
添加到.yml
文件的通道部分,解决了这个问题。对于我来说,最好的做法是:
哪条python
(确认它在anaconda3容器中)
请注意哪个版本与Anaconda使用的版本(这里是3.7.3)相匹配(因为我正在创建一个新的环境,所以我可以使用与Anaconda本身使用的相同版本的Python)。请注意,我在conda频道(上面的conda搜索)中的列表只显示了一行3.7.3
然后这样做:
conda create -n myenv python=3.7.3 anaconda
运行最后一个命令花费了大约1分钟:)一般来说,这个问题的答案是您应该从头开始创建.yml,只需要使用所需的通道和约束。您应该放松版本约束,使它们看起来只像1.19,而不是1.19.10
然而,尽管遵循了这个建议,我现在几乎完全有你的问题。它在fontconfig上花了很多小时,我在放弃前一夜就离开了它。我的规范非常简单:
channels:
- conda-forge
- usgs-astrogeology
- defaults
dependencies:
- python=3.6
- isis3
- gdal=2.3
当我弄明白后,我会编辑它
编辑:此处正在讨论此问题(特定于我试图设置的软件,可能对其他人没有帮助)此错误和随后的行为很可能来自,这会不时导致本地环境中的不一致。截至2020年1月26日,该漏洞尚未解决
对我来说,同样的问题在Mac上也有深刻的体现。我遇到了这个问题并解决了它。
首先,我使我的anaconda版本与yaml文件导出的位置一致。这可能是无用的,但我认为一致的CONDA版本可以保证一致的基础环境。
其次,我删除了所有依赖项,但删除了一些我实际上想在yaml文件中使用的“main”包。这意味着让这些“main”包处理依赖项问题。我在windows 10上也遇到了同样的问题,从2020年2月17日起使用pycharm和anaconda(python 3.7)的最新版本。奇怪的是,在pycharm的设置中切换项目解释器页面上的“use conda package manager”允许我正常更新numpy和安装软件包。尝试在不使用conda软件包管理器和conda软件包管理器的情况下安装软件包。祝你好运 对于我来说,将以下内容添加到yaml文件是有效的:
channels:
- conda-forge
- defaults
- conda-forge/label/broken
是啊,真是一团糟。从哪里开始。。。这很可能是不必要的(如果你不在中国,你肯定不需要那些中国镜像频道)。我对我们直接帮你解决这件事感到失望。您最好的机会是,如果您确实有一些代码库,您正试图运行。GREP表示导入语句,然后只保留导入的内容。如果某个东西在Conda中有一个等价的包,那么它应该从pip
部分移走,但这只是一个好的实践,并没有朝着创建环境的目标移动太多。@merv我担心这就是答案。我只是好奇为什么它要检查冲突路径,比如version='>=2.12.6,我不完全确定。如果我不得不猜测的话,似乎当Conda进入冲突解决模式时,它将显式的specfontconfig=2.13.1
视为另一个约束,以及来自所有依赖它的包的约束(例如,fontconfig[version='>=2.12.6,
channels:
- conda-forge
- usgs-astrogeology
- defaults
dependencies:
- python=3.6
- isis3
- gdal=2.3
channels:
- conda-forge
- defaults
- conda-forge/label/broken