我试图从anaconda更新或安装新包,最近,这条消息出现了:

The environment is inconsistent, please check the package plan carefully
The following package are causing the inconsistency:

   - defaults/win-32::anaconda==5.3.1=py37_0

done

我尝试用conda clean -all,然后用conda update -all,但它仍然存在。

第二次信息

active environment : base
    active env location : C:\Users\NAME\Continuum
            shell level : 1
       user config file : C:\Users\NAME\.condarc
 populated config files : C:\Users\NAME\.condarc
          conda version : 4.6.11
    conda-build version : 3.17.7
         python version : 3.7.3.final.0
       base environment : C:\Users\NAME\Continuum  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/win-32
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/win-32
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/win-32
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-32
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\Users\NAME\Continuum\pkgs
                          C:\Users\NAME\.conda\pkgs
                          C:\Users\NAME\AppData\Local\conda\conda\pkgs
       envs directories : C:\Users\NAME\Continuum\envs
                          C:\Users\NAME\.conda\envs
                          C:\Users\NAME\AppData\Local\conda\conda\envs
               platform : win-32
             user-agent : conda/4.6.11 requests/2.21.0 CPython/3.7.3 Windows/10 Windows/10.0.17763
          administrator : False
             netrc file : None
           offline mode : False

当前回答

我有这个问题已经很久了。conda安装anaconda可能可以工作,但它花费的时间太长了——在我的机器上超过24小时。

下面是一个在5分钟内对我有效的解决方法:

删除所有不需要的包——注意留下对conda操作至关重要的包。 然后,使用conda安装anaconda。

但是如何? ?他们有很多人!

我所行的乃是这样:

用python做一个新鲜的环境,相当简单。然后,列出其中的包:

Conda创建-n fresh python

Conda激活新鲜

conda列表

保存输出,您将需要它。 1 b。回到基地环境:

conda禁用

使用下面的代码段生成一个conda命令,该命令将删除所有不一致的包:

(好的包装是)

exclusion_text = '''
_libgcc_mutex             0.1                        main  
_openmp_mutex             4.5                       1_gnu  
anyio                     2.2.0            py39h06a4308_1  
argon2-cffi               20.1.0           py39h27cfd23_1  
async_generator           1.10               pyhd3eb1b0_0  
...

... 和更多!从良好的环境中获得这些。

注意在python中使用三引号(" ')来使用多行字符串。

bad_packages_text = '''
  - https://repo.continuum.io/pkgs/main/linux-64/networkx-2.1-py36_0.tar.bz2/linux-64::networkx==2.1=py36_0
  - https://repo.continuum.io/pkgs/main/linux-64/spyder-3.2.6-> py36_0.tar.bz2/linux-64::spyder==3.2.6=py36_0
py36h4c697fb_0.tar.bz2/linux-64::jdcal==1.3=py36h4c697fb_0
 - defaults/noarch::jupyterlab_server==1.1.4=py_0
 - defaults/linux-64::argh==0.26.2=py37_0
... 

... 和更多!通过复制粘贴“以下包导致不一致”消息来获得此消息。

然后,在python中处理:

exclusions = [line.split(' ')[0] for line in exclusion_text_lines if line !='']
bad_packages_lines = bad_packages_text.split('\n')
bad_packages = [line.split('::')[1].split('==')[0] for line in bad_packages_lines if line!='']
exclusions.append('conda') # make sure!
exclusions.append('tqdm')

最后,构建救生命令:

command_line = 'conda remove '
for bad_package in bad_packages:
    if bad_package not in exclusions:
        command_line = f'{command_line} {bad_package}'
command_line   

由于在解决环境时,remove列表中的所有包都可以忽略,因此conda不再需要考虑它们的版本,处理速度快。

也许有人可以重构这个方法使其更简单——或者更好的是,升级conda以启用快速重置基本命令。

这对我来说很有效——我写这篇文章花的时间比执行这些操作花的时间还长。

好运!

其他回答

我有这个问题已经很久了。conda安装anaconda可能可以工作,但它花费的时间太长了——在我的机器上超过24小时。

下面是一个在5分钟内对我有效的解决方法:

删除所有不需要的包——注意留下对conda操作至关重要的包。 然后,使用conda安装anaconda。

但是如何? ?他们有很多人!

我所行的乃是这样:

用python做一个新鲜的环境,相当简单。然后,列出其中的包:

Conda创建-n fresh python

Conda激活新鲜

conda列表

保存输出,您将需要它。 1 b。回到基地环境:

conda禁用

使用下面的代码段生成一个conda命令,该命令将删除所有不一致的包:

(好的包装是)

exclusion_text = '''
_libgcc_mutex             0.1                        main  
_openmp_mutex             4.5                       1_gnu  
anyio                     2.2.0            py39h06a4308_1  
argon2-cffi               20.1.0           py39h27cfd23_1  
async_generator           1.10               pyhd3eb1b0_0  
...

... 和更多!从良好的环境中获得这些。

注意在python中使用三引号(" ')来使用多行字符串。

bad_packages_text = '''
  - https://repo.continuum.io/pkgs/main/linux-64/networkx-2.1-py36_0.tar.bz2/linux-64::networkx==2.1=py36_0
  - https://repo.continuum.io/pkgs/main/linux-64/spyder-3.2.6-> py36_0.tar.bz2/linux-64::spyder==3.2.6=py36_0
py36h4c697fb_0.tar.bz2/linux-64::jdcal==1.3=py36h4c697fb_0
 - defaults/noarch::jupyterlab_server==1.1.4=py_0
 - defaults/linux-64::argh==0.26.2=py37_0
... 

... 和更多!通过复制粘贴“以下包导致不一致”消息来获得此消息。

然后,在python中处理:

exclusions = [line.split(' ')[0] for line in exclusion_text_lines if line !='']
bad_packages_lines = bad_packages_text.split('\n')
bad_packages = [line.split('::')[1].split('==')[0] for line in bad_packages_lines if line!='']
exclusions.append('conda') # make sure!
exclusions.append('tqdm')

最后,构建救生命令:

command_line = 'conda remove '
for bad_package in bad_packages:
    if bad_package not in exclusions:
        command_line = f'{command_line} {bad_package}'
command_line   

由于在解决环境时,remove列表中的所有包都可以忽略,因此conda不再需要考虑它们的版本,处理速度快。

也许有人可以重构这个方法使其更简单——或者更好的是,升级conda以启用快速重置基本命令。

这对我来说很有效——我写这篇文章花的时间比执行这些操作花的时间还长。

好运!

我也遇到过同样的问题。简单地运行

conda install anaconda

帮我解决了问题。

假设有如下情况,

> conda update -c intel --all
Collecting package metadata: done
Solving environment: |
The environment is inconsistent, please check the package plan carefully
The following packages are causing the inconsistency:

  - intel/win-64::ipython==6.3.1=py36_3
  - intel/win-64::prompt_toolkit==1.0.15=py36_2
done

正如在其他回答中提到的,其思想是对不一致的包进行某种重新安装。

因此,通过一些复制-粘贴,你可以:

> conda install intel/win-64::ipython==6.3.1=py36_3
Collecting package metadata: done
Solving environment: /
The environment is inconsistent, please check the package plan carefully
The following packages are causing the inconsistency:

  - intel/win-64::ipython==6.3.1=py36_3
  - intel/win-64::prompt_toolkit==1.0.15=py36_2
done

## Package Plan ##

  environment location: c:\conda

  added / updated specs:
    - ipython


The following NEW packages will be INSTALLED:

  jedi               intel/win-64::jedi-0.12.0-py36_2
  parso              intel/win-64::parso-0.2.0-py36_2
  pygments           intel/win-64::pygments-2.2.0-py36_5
  wcwidth            intel/win-64::wcwidth-0.1.7-py36_6


Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

(你将不得不重复所有的包)


我的“快捷方式”

或者,编写一个(丑陋的)一行程序(这应该适用于Windows和其他平台)

注意:通过“ORIGINAL_COMMAND”,我指的是给您错误消息的任何命令(理想情况下没有任何其他副作用)

<ORIGINAL_COMMAND> 2>&1 | python -c "import sys,re,conda.cli; conda.cli.main('conda','install','-y',*re.findall(r'^\s*-\s*(\S+)$',sys.stdin.read(),re.MULTILINE))"

展开上面的一行代码:

from re import findall, MULTILINE
from sys import stdin
from conda.cli import main

main(
    "conda", "install", "-y",
    "--force",  # Maybe add a '--force'/'--force-reinstall' (I didn't add it for the one-liner above)
    *findall(r"^\s*-\s*(\S+)$", stdin.read(), MULTILINE)  # Here are the offenders
)

对于我们这些拥有miniconda并且不能/不想安装anaconda的人来说:接受的答案在调整时是有效的。

第二秒第二秒 第二次更新——全部

本想评论的,但我的名声太低了。

当我试图更新我的基本conda环境时,我得到了一个环境不一致的错误。我用miniconda。不幸的是,上面的答案都不适合我。

对我有用的是:

conda activate base
conda install conda --force-reinstall
conda install conda --force-reinstall
conda update --all

(是的,由于某些原因,有必要运行conda install conda -force-重装两次!)